C+中的DevIL和OpenGL+; 我用魔鬼编写C++ OpenGL项目,在编译如何加载一个图像作为纹理时,我会遇到编译时错误。

C+中的DevIL和OpenGL+; 我用魔鬼编写C++ OpenGL项目,在编译如何加载一个图像作为纹理时,我会遇到编译时错误。,c++,opengl,image-processing,textures,devil,C++,Opengl,Image Processing,Textures,Devil,到目前为止,我有这个 //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 lo

到目前为止,我有这个

//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:“+”:无法添加两个指针

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

if (!ilLoadImage(const_cast<char*>(filename.c_str())))
if(!ilLoadImage(const_cast(filename.c_str()))
我收到此链接器错误
错误LNK1104:无法打开文件'DevIL.libkernel32.lib'


<>我确信我已经把所有的魔鬼文件放在需要的地方,并在Projt:> Projk:Link > -Posiv>附加依赖项中添加了依赖项。

< P>通过确保添加C++字符串而不是C字符串

来修复编译错误。 通过在附加依赖项中的LIB之间放置一个空格来修复链接错误

此外,如果你必须使用const_cast,很可能你做得不对

ILboolean ilLoadImage(const char *filename);

无需强制转换到
char*
即可传递
.c_str()
-
.c_str()
返回一个
常量char*

链接错误持续存在。我在Microsoft SDK\Windows\7.0A\lib和config.h、config.h.in、DevIL\u cpp\u wrapper.h、DevIL\u internal\u exports.h、il.h、ILU.h、ILU region.h、ILUT.h和ILUT\u config.h中添加了DevIL.lib、ILU.lib和ILUT.lib,并将它们放在与上述相同的目录中,但不是\lib,而是放在\Include\il中。我的#包括:、和。我是否遗漏了什么,或者做了什么错事?您应该将“附加库目录”设置为lib文件的位置,并将libs空间添加到“附加依赖项”中。如果你在SDK目录中添加了任何东西,那你就是做错了,是我做的。问题仍然存在。显然,它适用于所有DevIL库,不仅仅是DevIL.lib,还有ilut.lib和ilu.lib,因为我尝试在“附加依赖项”中更改它们的顺序,而它总是最后一个找不到的。正如你所说,我还更改了“附加库文件”,即使在过去我将OpenGL库放入SDK文件夹中,然后没有将它们添加到“附加库文件”中,它没有抱怨。@OddCore:尝试显式地在lib列表的末尾添加一个空格-听起来像是您的项目文件或继承的属性表被损坏了。很抱歉浪费了您的时间,原来我缺少了一个;在“附加依赖项”列表中最后一个.lib文件的末尾。想想我在这上面浪费了4天。。。。
ILboolean ilLoadImage(const char *filename);