使用cl.exe unicode转换错误编译

时间:2012-12-28 13:40:17

标签: c visual-studio winapi

首先代码编译并运行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)

1 个答案:

答案 0 :(得分:4)

您正在尝试将WCHAR数组传递给期望LPCTSTR的函数。 This article解释LPCTSTR是一个TCHAR的数组,TCHAR的大小与unicode和非unicode版本不同。

您的代码依赖于sizeof(TCHAR) == sizeof(WCHAR),因此您需要启用unicode支持。

我猜你在IDE中的构建启用了unicode而你的命令行没有。您可以通过在命令行中添加-DUNICODE -D_UNICODE来启用unicode支持。