首先代码用VS2010编译运行
但是当我用 cl.exe 编译时它给出了
cannot convert parameter 1 from 'WCHAR [10]' to 'LPCTSTR'
代码是
char *fileName = "12.txt";
WCHAR ufileName[10];
MultiByteToWideChar(CP_ACP, MB_COMPOSITE, fileName, -1, ufileName, 10);
postFile(ufileName, clientSock);
postFile(LPCTSTR lpFileName, SOCKET clientSock)
最佳答案
您正在尝试将 WCHAR
数组传递给需要 LPCTSTR
的函数。 This article解释 LPCTSTR
是一个 TCHAR
数组,TCHAR
的大小因 unicode 和非 unicode 构建而异。
您的代码依赖于 sizeof(TCHAR) == sizeof(WCHAR)
,因此您需要启用 unicode 支持。
我猜测您在 IDE 中的构建启用了 unicode,而您的命令行构建则没有。您可以通过将 -DUNICODE -D_UNICODE
添加到命令行来启用 unicode 支持。
关于使用 cl.exe unicode 转换错误进行编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14070408/