C++ DevIL функция ilLoadImage - выход из программы, нарушение прав доступа

У меня есть путь к моему файлу, определенный следующим образом:

const char* GROUND_TEXTURE_FILE = "objects/textures/grass.jpg";

А вот функция, которую я использую для загрузки изображения:

bool loadTexImage2D(const string &fileName, GLenum target) {
    ...
    // this will load image data to the currently bound image
    // at first, we must convert fileName, for ascii, this method is fine?
    wstring file(fileName.begin(), fileName.end());

    if(ilLoadImage(file.c_str()) == IL_FALSE) { //here the program falls

Что не так в моем коде? Почему программа падает при вызове ilLoadImage? Я думаю, что file.c_str() должен нормально работать как тип wchar_t * или нет? Спасибо за ответ :)


person ketysek    schedule 06.05.2016    source источник
comment
Мне любопытно. Зачем вообще использовать wchar? Что произойдет, если вы загрузите, используя имя файла?   -  person Andreas    schedule 06.05.2016
comment
потому что const char * несовместим с const wchar_t * ... но я разобрался ... проблема не здесь, я не инициализировал библиотеку DevIl с помощью ilInit(); ... моя ошибка   -  person ketysek    schedule 06.05.2016


Ответы (1)


Как сказал автор, вы можете делать что угодно без инициализации библиотеки: D

#include <iostream>
#include <IL/il.h>

int main ()
{
    std::string filename = "objects/textures/grass.jpg";

    ilInit();

    if (!ilLoadImage(filename.c_str())) {
        std::cout << ilGetError() << std::endl;
        return 1;
    }

    std::cout << ilGetInteger(IL_IMAGE_WIDTH) << std::endl;
    std::cout << ilGetInteger(IL_IMAGE_HEIGHT) << std::endl;

    return 0;
}

строить:

g++ -Wall -pedantic --std=c++11 -g -o app main.cpp -lIL
person Hugo do Carmo    schedule 06.05.2016