为了账号安全,请及时绑定邮箱和手机立即绑定

想请教一个问题,具体看下面,在C++中的CreateProcess函数的问题?

想请教一个问题,具体看下面,在C++中的CreateProcess函数的问题?

C# C
慕侠2389804 2021-08-03 11:07:16
CreateProcess这个函数第2个参数到底是LPSTR类型的还是LPWSTR类型的?为什么我在编译Win32 APP exe程序时候就是LPSTR类型的,而且一切正常(正常编译)正常运行..但是在Win32 APP DLL 程序中就要求转换成LPWSTR类型 否则编译时出错.转换成LPWSTR类型后可以编译成功 但是编译好的程序运行到这里系统会报错..我用的是Microsoft Visual Studio 2005
查看完整描述

2 回答

?
杨魅力

TA贡献1811条经验 获得超6个赞

老大,你自己看函数的原型形式吧。。。。。。。。。。。

WINBASEAPI
BOOL
WINAPI
CreateProcessA(
LPCSTR lpApplicationName,
LPSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCSTR lpCurrentDirectory,
LPSTARTUPINFOA lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
WINBASEAPI
BOOL
WINAPI
CreateProcessW(
LPCWSTR lpApplicationName,
LPWSTR lpCommandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags,
LPVOID lpEnvironment,
LPCWSTR lpCurrentDirectory,
LPSTARTUPINFOW lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);


查看完整回答
反对 回复 2021-08-09
?
炎炎设计

TA贡献1808条经验 获得超4个赞

我也遇到过这个问题.

原因是VC2005里把默认的字符串类型定为Unicode类型,VC2005以前的工程是多字节字符集,所以你生成以前的工程不会报错,而现在把以前工程里的代码复制到用VC2005生成的工程里时就会报错.

解决方法也很简单,在"项目->'工程名'属性->配置属性->常规->项目默认值->字符集"上选择 "使用多字节字符集" 就行了.

还有个方法就是不改"字符集"属性,用 _T("字符串内容") 宏或用 L"字符串内容" 定义所有工程里的字符串.

查看完整回答
反对 回复 2021-08-09
  • 2 回答
  • 0 关注
  • 251 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信