我在用
TCHAR缓冲区[MAX_SIZE];
经过一系列步骤后,我得到了文件夹的相对路径,例如:
c:\ Microsoft.NET \ Framework \ v1.0.037 \
由于上面的路径在类型为TCHAR的缓冲区中,我正在尝试连接“ RegAsm.exe”
追加后,我需要将路径转换为LPCTSTR,因为我需要将其传递给
使用LPCTSTR类型作为参数的CreateProcess()
然后编译器给出错误。我尝试过但烦恼。
谁能在这方面帮助我....
最佳答案
问题在于TCHAR和CreateProcess是根据您是否为Unicode编译而扩展的宏。需要注意的是,GetCORSystemDirectory()将仅接受Unicode缓冲区。要摆脱这些ANSI / Unicode问题,请为Unicode明确编写此代码部分。
代替TCHAR,使用WCHAR作为缓冲区。代替CreateProcess(),使用CreateProcessW()-它会很高兴地接受Unicode缓冲区。使用wcscat()进行字符串连接。
像这样(省略错误处理):
WCHAR buffer[MAX_PATH + 1];
DWORD realLength;
GetCORSystemDirectory( buffer, MAX_PATH, &realLength );
*( buffer + realLength ) = 0;// Don't forget to null-terminate the string
wcscat( buffer, L"regasm.exe" );
CreateProcessW( /*pass buffer here*/ );
关于c++ - 在以下情况下如何进行类型转换?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1175976/