0

我是 C++ 新手(我来自 PHP),在我最初的几个项目中,我遇到了一些来自 IntelliSense 的错误。调试窗口说的是:

IntelliSense:“const char *”类型的参数与“LPCWSTR”类型的参数不兼容 c:\C++\RenderEngine\RenderEngine\engine.c

当我运行那个简单的代码时,甚至会出现这个错误:

#include <Windows.h>

int WINAPI WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmd, int nShow)
{
    MessageBox(NULL, "Hello, world!", "Simple pop-up", MB_OK);
    return 0;
}

但是,如果我在引号( L"Hello, world!" )前加上“L”,错误就会消失。是否有可能以任何不同的方式摆脱它?(我正在关注的教程没有前面的 L,所以这对我来说很困惑......)我一直在寻找互联网,但我没有发现任何有用的东西......对不起,如果有这样的问题已经回答了,只是我没看到...

此致,阿明·马科维克。

4

2 回答 2

0

设法通过转到:“项目->(项目名称)属性->配置属性->常规->字符集”并将其设置为多字节字符集来解决它

于 2012-07-20T09:14:57.523 回答
0

该错误是因为您在需要宽字符字符串的地方使用 8 位字符字符串。引号中的字符串常量是 ASCII(8 位)字符串,将 L 放在它前面,例如 L"A string constant" 表示它是 wchar_t 字符串。

像你一样解决它,通过将环境属性设置为始终使用 wchar_t 字符串是解决它的一种方法,但如果你这样做,它不会在其他任何地方编译。通常最好以可移植的方式进行操作,只需通过以 L 开头的字符串文字来使用 wchar_t 字符串。

于 2012-07-20T17:54:12.150 回答