dac*_*ctz 17 c++ opengl char bmp visual-c++
我试图加载BMP文件
AUX_RGBImageRec *LoadBMP(char *Filename) // Loads A Bitmap Image
{
FILE *File=NULL; // File Handle
if (!Filename) // Make Sure A Filename Was Given
{
return NULL; // If Not Return NULL
}
File=fopen(Filename,"r"); // Check To See If The File Exists
if (File) // Does The File Exist?
{
fclose(File); // Close The Handle
return auxDIBImageLoad(Filename); // Load The Bitmap And Return A Pointer
}
return NULL; // If Load Failed Return NULL
}
Run Code Online (Sandbox Code Playgroud)
这来自一个例子,但我现在得到错误
错误C2664:'auxDIBImageLoadW':无法将参数1从'char*'转换为'LPCWSTR'
我怎么能纠正这个?
Pau*_*oke 33
您正在使用字符集设置为UNICODE(项目设置 - >配置选项 - >常规)编译应用程序.Windows头文件使用#defines将函数名"映射"到nameA(对于多字节字符串)或nameW(对于unicode字符串).
这意味着在头文件中的某个地方会有像这样的#define
#define auxDIBImageLoad auxDIBImageLoadW
Run Code Online (Sandbox Code Playgroud)
所以你实际上并没有打电话auxDIBImageLoad
(没有那个名字的功能),你正在打电话auxDIBImageLoadW
.并auxDIBImageLoadW
期望一个unicode字符串(wchar_t const*
).您正在传递一个多字节字符串(char const*
).
您可以执行以下操作之一
auxDIBImageLoad
为显式调用函数的多字节版本auxDIBImageLoadA
LoadBMP
函数以接受unicode字符串本身LoadBMP
我建议更改LoadBMP
为接受unicode字符串本身或auxDIBImageLoadA
直接调用(按此顺序).如果不破坏许多其他代码,更改项目设置可能没问题.我不建议转换字符串,因为它是不必要的.auxDIBImageLoadA
直接呼叫要容易得多,结果也一样.
ild*_*arn 10
你有几个选择:
auxDIBImageLoadA
而不是auxDIBImageLoad
Filename
类型char*
为wchar_t*
std::mbstowcs
到文件名从转换char*
到wchar_t*
归档时间: |
|
查看次数: |
60331 次 |
最近记录: |