在Eclipse编译依赖jpeglib.h的C++程序时遇size_t未定义错误,如何解决?
解决<jpeglib.h>中‘size_t’未定义的编译错误
别直接修改系统自带的<jpeglib.h>头文件!这绝对是最糟糕的选择——不仅会破坏系统库的完整性,换个编译环境又会重现问题,完全没有可移植性可言。给你几个更靠谱的解决办法:
手动提前包含标准头文件
在你的C源文件里,把<stddef.h>(C风格头文件,更适配jpeglib这类C库)或者<cstddef>(C标准头文件)放在<jpeglib.h>之前包含:#include <stddef.h> // 或者用C++标准头文件 #include <cstddef> #include <jpeglib.h>size_t是C/C++的标准类型,这两个头文件都会定义它。提前包含就能确保<jpeglib.h>用到size_t时已经有定义了。检查编译环境与项目设置
确认你是用C编译器(比如g)编译项目,而不是C编译器(gcc)。另外在Eclipse的项目设置里,看看有没有错误修改了头文件搜索路径,或者添加了奇怪的预定义宏,导致系统标准头文件没被正确识别。升级libjpeg库(如果是版本问题)
要是你用的是比较老旧的libjpeg版本,可能确实存在头文件漏包含<stddef.h>的bug。这种情况下,直接升级到最新的稳定版libjpeg库,就能从根源上解决问题,比手动改头文件靠谱多了。
总结一下:修改系统头文件是饮鸩止渴,优先用提前包含标准头文件的方法,再排查编译环境,最后考虑升级库。
内容的提问来源于stack exchange,提问作者arcoxia tom
相关产品推荐
相关产品推荐

