C ++ DevIL函数ilLoadImage - 程序退出,访问冲突

时间:2016-05-06 14:09:51

标签: c++ devil

我有一条通过这种方式定义文件的路径:

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 *类型吗?谢谢你的回答:)

1 个答案:

答案 0 :(得分:0)

正如作者所说,如果不初始化lib,你可以做任何事情: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