C++中的CreateProcess函数的问题
CreateProcess这个函数第2个参数到底是LPSTR类型的还是LPWSTR类型的?为什么我在编译Win32APPexe程序时候就是LPSTR类型的,而且一切正常(...
CreateProcess这个函数第2个参数
到底是LPSTR类型的
还是LPWSTR类型的?
为什么我在编译Win32 APP exe程序时候就是LPSTR类型的,而且一切正常(正常编译)正常运行..
但是在Win32 APP DLL 程序中就要求转换成LPWSTR类型 否则编译时出错.
转换成LPWSTR类型后可以编译成功 但是编译好的程序运行到这里系统会报错..
我用的是Microsoft Visual Studio 2005
哪位高人指点小弟一下 也可以加我的QQ:2172897 验证:baidu 展开
到底是LPSTR类型的
还是LPWSTR类型的?
为什么我在编译Win32 APP exe程序时候就是LPSTR类型的,而且一切正常(正常编译)正常运行..
但是在Win32 APP DLL 程序中就要求转换成LPWSTR类型 否则编译时出错.
转换成LPWSTR类型后可以编译成功 但是编译好的程序运行到这里系统会报错..
我用的是Microsoft Visual Studio 2005
哪位高人指点小弟一下 也可以加我的QQ:2172897 验证:baidu 展开
2个回答
展开全部
我也遇到过这个问题.
原因是VC2005里把默认的字符串类型定为Unicode类型,VC2005以前的工程是多字节字符集,所以你生成以前的工程不会报错,而现在把以前工程里的代码复制到用VC2005生成的工程里时就会报错.
解决方法也很简单,在"项目->'工程名'属性->配置属性->常规->项目默认值->字符集"上选择 "使用多字节字符集" 就行了.
还有个方法就是不改"字符集"属性,用 _T("字符串内容") 宏或用 L"字符串内容" 定义所有工程里的字符串.
原因是VC2005里把默认的字符串类型定为Unicode类型,VC2005以前的工程是多字节字符集,所以你生成以前的工程不会报错,而现在把以前工程里的代码复制到用VC2005生成的工程里时就会报错.
解决方法也很简单,在"项目->'工程名'属性->配置属性->常规->项目默认值->字符集"上选择 "使用多字节字符集" 就行了.
还有个方法就是不改"字符集"属性,用 _T("字符串内容") 宏或用 L"字符串内容" 定义所有工程里的字符串.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
老大,你自己看函数的原型形式吧。。。。。。。。。。。
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
);
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
);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询