C ++错误C2061:语法错误:标识符'FILE'jpeglib问题?

时间:2014-12-16 06:21:15

标签: c++ libjpeg

我正在进行一次需要来自http://www.ijg.org/的jpeglib的演练。 在jpegsr9a.zip中安装文件并添加使用这些文件的代码后,编译后出现以下错误:

1>  jpeg.cpp
1>c:\libraries\jpeg\jpegsr9a\jpeg\jpeglib.h(974): error C2061: syntax error : identifier 'FILE'
1>c:\libraries\jpeg\jpegsr9a\jpeg\jpeglib.h(975): error C2061: syntax error : identifier 'FILE'
1>c:\...\jpeg.h(5): error C2143: syntax error : missing ';' before '*'
1>c:\...\jpeg.h(5): error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
1>c:\...\jpeg.cpp(11): error C2065: 'pBitMap' : undeclared identifier
1>c:\...\jpeg.cpp(16): error C2065: 'pBitMap' : undeclared identifier
1>c:\...\jpeg.cpp(16): error C2227: left of '->sizeX' must point to class/struct/union/generic type
1>          type is 'unknown-type'

还有更多,但我认为它们都与C2061错误有关。这看起来像我在添加库时犯了错误吗?

以下是程序中的头文件:

// heightfield.h

#include <Windows.h>

// jpeg.h

#include <Windows.h>
#include <jpeglib.h>
#pragma comment(lib, "jpeg.lib")

tImageJPG *SwiftLoadJpeg(const char *srFileName);

void SwiftTextureJpeg(unsigned int tTexture [], LPSTR strFileName, int ID);

任何想法都会非常感激。

1 个答案:

答案 0 :(得分:1)

当您看到它无法识别标识符时,在检查标识符名称中的拼写错误后, 找一个缺少的#include。

由于无法识别的变量是FILE,它是标准库中输入/输出接口的一部分,因此所需的文件是。

如果你不知道的话,你会怎么想?查看FILE的文档/帮助,或者使用FILE的函数。他们应该指定需要哪个头文件。

你的第二个错误C2143看起来也是一个缺少的#include。它位于第5行。查看第5行。第一个*位于标识符tImageJPG之后。如果编译器不识别tImageJPG,它就不会期待像#34; *&#34;在它之后。这是你的类型吗?我没有在网上找到的jpeglib.h副本中看到它,你显然包括jpeglib.h。也许您自己的项目中有一个头文件,您需要在此处包含该文件。或者它可能尚未定义,并且仍需要编写typedef。