2016-05-06 25 views
5

私は自分のファイルへのパスを持ってこのように定義:C++悪魔機能ilLoadImage - プログラムの終了、アクセス違反

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 

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

そして、ここでは、私がイメージをロードするために使用する機能であり、

私のコードで何が間違っていますか? ilLoadImageと呼ばれると、なぜプログラムが落ちるのですか?私は、file.c_str()は、wchar_t *タイプとして正常に動作するはずだと思いますか?おかげで答え:)

+0

私は好奇心が強いです。なぜwcharを使うのですか? fileNameを使用してロードするとどうなりますか? – Andreas

+0

const char *はconst wchar_t *と互換性がないためですが、わかりました...問題はここにはなく、私はDevilライブラリを 'ilInit();'を使って初期化しませんでした...私の誤り – user3216673

答えて

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 
関連する問題