【Visual Studio】移植其他工程时,报错 C2664,无法将参数 从“const char []”转换为“LPCWSTR”,环境背景为使用 C++ 开发 Qt

知识不是单独的,一定是成体系的。更多我的个人总结和相关经验可查阅这个专栏:Visual Studio

文章目录

问题

复制一下错误信息,方便别人在检索时能检索到我这个文章。错误信息如下:

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 C2664 “int MessageBoxW(HWND,LPCWSTR,LPCWSTR,UINT)”: 无法将参数 2 从“const char [29]”转换为“LPCWSTR” GUICamera C:\Users\jicha\source\repos\GUICamera\supportcode.cpp 208


错误截图如下:

在这里插入图片描述


解决方案

尝试了修改“字符集”,改成“使用多字节字符集”,但是还是不行。

在这里插入图片描述


有一种解决办法是前边加个大写字母 “L”,说是由于您当前的设置似乎已设置为WinAPI函数需要宽字符串。不是很明白,不过能暂时解决问题了。

在这里插入图片描述


还有一种办法是代码

#include <Windows.h>

之前加上

#undef UNICODE
#undef _UNICODE

如果是提示无法转换为 “LPCSTR”,那就加上下面这一句。

#define UNICODE
#define _UNICODE

Ref.

  1. vs 无法将参数 1 从“const char *”转换为“LPCWSTR” 解决办法
  2. 无法将参数2从“const char [14]”转换为“LPCWSTR”
  3. Why #define UNICODE has no effect in windows

猜你喜欢

转载自blog.csdn.net/weixin_36815313/article/details/131588358
今日推荐