我在用

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/

10-11 22:48
查看更多