2

初日の VC++ の結果をご覧ください。私が認識しているエラーが含まれています。私の問題は、悪魔が本来あるべきエラーを思い付くことですが、iluErrorString() を使用してこのエラーを文字列にデコードしようとすると、アクセス違反が発生することです...

#pragma comment(lib, "ILU.lib")
#pragma comment(lib, "ILUT.lib")

#include <iostream>
#include <conio.h>
#include <stdio.h>

#include <IL/il.h>
#include <IL/ilu.h>
#include <IL/ilut.h>

using namespace std;

int main(){
FILE *myFile;
ILuint fileSize;
ILubyte *Lump;

ilInit();

ILuint ImageName; // The image name to return.
ilGenImages(1, &ImageName); // Grab a new image name.

ilBindImage(ImageName); //bind the image

myFile = fopen("C:/Documents and Settings/Bartjan/Desktop/c++ meuq/test/Debug/image.png", "r"); //open the file for reading
if (myFile != NULL){
    fseek(myFile, 0, SEEK_END); //get file size
    fileSize = ftell(myFile);

    Lump = (ILubyte*)malloc(fileSize); //allocate mem
    fseek(myFile, 0, SEEK_SET); //set the file pointer
    fread(Lump, 1, fileSize, myFile); //read the entire file into mem

    fclose(myFile);

    ilLoadL(IL_PNG, Lump, fileSize);
    free(Lump);
}

ilDeleteImages(1, &ImageName); //delete the image

ILenum error;
while ((error = ilGetError()) != IL_NO_ERROR) {
    cout << error << ": " << iluErrorString(error);
}

_getch();
return 0;
}

これを理解していないことを意味するエラー 1285 が表示されます。

ilLoadL(IL_PNG, Lump, fileSize);

これは承知しております。問題はここにあります:

cout << error << ": " << iluErrorString(error);

これによりアクセス違反が発生し、その理由がわかりません。

4

2 に答える 2

3

この問題は、IL で行ったように ILU を初期化していない場合に発生します。

iluInit();
于 2015-05-21T20:50:47.573 に答える
0

これは、ilGetString と同様に、iluErrorString が常に 0 を返すためです。

于 2013-10-02T12:29:11.453 に答える