DevIL и OpenGL в C++
Я пишу проект C++ OpenGL, используя 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 load image" +filename);
}
который представляет меня с ошибкой: error C2110: '+' : cannot add two pointers
если я изменю декларацию filename
в string filename = "back.bmp";
и если заявление
if (!ilLoadImage(const_cast<char*>(filename.c_str())))
Я получаю эту ошибку компоновщика error LNK1104: cannot open file 'DevIL.libkernel32.lib'
Я уверен, что я поместил все файлы DevIL туда, где они должны быть, и добавил зависимости в Project->Properties->Linker->Input->Additional Dependencies.
1 ответ
Исправьте ошибку компиляции, гарантируя, что вы добавляете строки C++, а не строки C
throw runtime_error(std::string("Unable to load image") +filename);
Исправьте ошибку ссылки, поместив пробел между библиотеками в Дополнительные зависимости.
Кроме того, если вам нужно использовать const_cast, скорее всего, вы делаете это неправильно.
ILboolean ilLoadImage(const char *filename);
Вам не нужно бросать на char *
чтобы пройти .c_str()
- .c_str()
возвращает const char *