C++ 错误C2664:&x27;auxDIBImageLoadW';:无法将参数1从';LPSTR&x27;至';LPCWSTR';
在重新安装windows和VS 2012 Ultimate之后,我刚刚修改了代码。代码(如下所示)以前运行得非常好,但当我现在尝试运行代码时,它会出现以下错误:C++ 错误C2664:&x27;auxDIBImageLoadW';:无法将参数1从';LPSTR&x27;至';LPCWSTR';,c++,opengl,visual-studio-2012,C++,Opengl,Visual Studio 2012,在重新安装windows和VS 2012 Ultimate之后,我刚刚修改了代码。代码(如下所示)以前运行得非常好,但当我现在尝试运行代码时,它会出现以下错误: Error 1 error C2664: 'auxDIBImageLoadW' : cannot convert parameter 1 from 'LPSTR' to 'LPCWSTR' 代码: 你能帮我吗?将“LPSTR strFileName”更改为“LPCWSTR strFileName”,“building1.b
Error 1 error C2664: 'auxDIBImageLoadW' : cannot convert parameter 1 from 'LPSTR' to 'LPCWSTR'
代码:
你能帮我吗?将“LPSTR strFileName”更改为“LPCWSTR strFileName”,“building1.bmp”更改为L“building1.bmp”,将“clock.bmp”更改为L“clock.bmp”
始终要小心,因为LPSTR是ASCII,而LPCWSTR是Unicode。因此,如果函数需要Unicode变量(如:L“String here”),则不能为其指定ASCII字符串。解决方案如下: 将函数原型更改为宽字符串:
void CreateTexture(GLuint textureArray[], LPWSTR strFileName, int textureID)
//...
LPCWSTR k =L"grass.bmp";
CreateTexture(g_Texture, L"building1.bmp", 0);
CreateTexture(g_Texture, L"clock.bmp", 0);
pBitmap = auxDIBImageLoadA(strFileName);
或
不要更改函数原型,而是调用API函数的A
版本:
void CreateTexture(GLuint textureArray[], LPWSTR strFileName, int textureID)
//...
LPCWSTR k =L"grass.bmp";
CreateTexture(g_Texture, L"building1.bmp", 0);
CreateTexture(g_Texture, L"clock.bmp", 0);
pBitmap = auxDIBImageLoadA(strFileName);
建议:坚持使用宽字符串并使用正确的字符串类型。为什么要将窄字符串传递到宽函数中?