DevIL и OpenGL в C ++ - PullRequest
       38

DevIL и OpenGL в C ++

2 голосов
/ 16 апреля 2011

Я пишу проект 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 на

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

Я получаю эту ошибку компоновщика error LNK1104: cannot open file 'DevIL.libkernel32.lib'

Я уверен, что разместил все файлы DevIL там, где они должны быть, и добавил зависимости в Project-> Properties-> Linker-> Input-> Additional Dependencies.

1 Ответ

2 голосов
/ 16 апреля 2011

Исправьте ошибку компиляции, добавив C ++ строки , а не C строки

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

Исправьте ошибку ссылки, поместив пробел между библиотеками вДополнительные зависимости.

Также, если вам нужно использовать const_cast, есть вероятность, что вы делаете это неправильно.

ILboolean ilLoadImage(const char *filename);

Вам не нужно приводить к char *, чтобыpass .c_str() - .c_str() возвращает const char *

...