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 *

Другие вопросы по тегам