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

标签 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)

最佳答案

您正在尝试将 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/

相关文章:

c++ - 如何将 wchar 值存储在双引号字符串中

android - 使用 NEON 内在函数除以 float

visual-studio - 在Visual Studio数据库项目中,有没有一种方法可以在部署期间排除某些对象?

c++ - 错误 : invalid conversion from 'int (*)()' to 'long unsigned int'

windows - 如何检查一个进程中可以使用的地址空间的最大内存量

c - L1 缓存未命中的成本是多少?

windows - Cordova App 8.1 缓存 HTTP 请求

visual-studio - 安全下载管理器卡住了

windows - 在进程开始之前将 dll 注入(inject)进程的优雅方法

c - 为什么这段代码会导致编译错误? [C、全局变量、二维数组]