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

CreateProcess这个函数第2个参数

到底是LPSTR类型的

还是LPWSTR类型的?

为什么我在编译Win32 APP exe程序时候就是LPSTR类型的,而且一切正常(正常编译)正常运行..

但是在Win32 APP DLL 程序中就要求转换成LPWSTR类型 否则编译时出错.
转换成LPWSTR类型后可以编译成功 但是编译好的程序运行到这里系统会报错..

我用的是Microsoft Visual Studio 2005

慕侠2389804
浏览 252回答 2
2回答

杨魅力

老大,你自己看函数的原型形式吧。。。。。。。。。。。WINBASEAPIBOOLWINAPICreateProcessA(LPCSTR lpApplicationName,LPSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCSTR lpCurrentDirectory,LPSTARTUPINFOA lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);WINBASEAPIBOOLWINAPICreateProcessW(LPCWSTR lpApplicationName,LPWSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWORD dwCreationFlags,LPVOID lpEnvironment,LPCWSTR lpCurrentDirectory,LPSTARTUPINFOW lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation);

炎炎设计

我也遇到过这个问题.原因是VC2005里把默认的字符串类型定为Unicode类型,VC2005以前的工程是多字节字符集,所以你生成以前的工程不会报错,而现在把以前工程里的代码复制到用VC2005生成的工程里时就会报错.解决方法也很简单,在"项目->'工程名'属性->配置属性->常规->项目默认值->字符集"上选择 "使用多字节字符集" 就行了.还有个方法就是不改"字符集"属性,用 _T("字符串内容") 宏或用 L"字符串内容" 定义所有工程里的字符串.
打开App,查看更多内容
随时随地看视频慕课网APP