2

我正在使用 DevIL 编写一个 C++ OpenGL 项目,并且在尝试确定如何加载图像以用作纹理时遇到编译时错误。

到目前为止我有这个

//Declarations
const char* filename = "back.bmp";
ILboolean ilLoadImage(const char *filename);

ILuint image;
ilGenImages(1, &image);
ilBindImage(image);

//Load the image
if (!ilLoadImage(filename))
{
throw runtime_error("Unable to load image" +filename);
}

这给我带来了错误:error C2110: '+' : cannot add two pointers

如果我将filenameto的声明string filename = "back.bmp";和 if 语句更改为

if (!ilLoadImage(const_cast<char*>(filename.c_str())))

我收到此链接器错误error LNK1104: cannot open file 'DevIL.libkernel32.lib'

我确定我已将所有 DevIL 文件放在需要的位置,并在 Project->Properties->Linker->Input->Additional Dependencies 中添加了依赖项。

4

1 回答 1

2

通过确保添加C++ 字符串而不是C 字符串来修复编译错误

throw runtime_error(std::string("Unable to load image") +filename);

通过在 Additional Dependencies 中的库之间放置一个空格来修复链接错误。

此外,如果您必须使用 const_cast,那么您可能做错了。

ILboolean ilLoadImage(const char *filename);

您无需强制转换char *即可通过.c_str()-.c_str()返回一个const char *

于 2011-04-16T13:36:03.593 回答