Mingw和libraw导致未定义的引用

时间:2012-10-16 14:24:07

标签: c++ mingw

是否有人使用libraw和mingw?我正在尝试编译程序并得到以下错误:

obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRawC1Ej'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw9open_fileEPKcx'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw6unpackEv'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw13dcraw_processEv'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw20dcraw_make_mem_imageEPi'|
obj\Release\inc\img\cimg.o:cimg.cpp|| undefined reference to `_imp___ZN6LibRaw7recycleEv'|
obj\Release\inc\img\cimg.o:cimg.cpp:(.text$_ZN6LibRawD1Ev[LibRaw::~LibRaw()]+0xf)||undefined reference to `_imp___ZN6LibRaw7recycleEv'|
||=== Build finished: 7 errors, 0 warnings ===|

我在我的项目中添加了libraw.a。无法解决问题。 有人有想法吗?

1 个答案:

答案 0 :(得分:1)

从这些符号名称看起来,您正试图针对libraw的DLL版本进行编译(由_imp___前缀暗示)。检查您的libraw头文件,并确保函数名称前面没有__declspec(dllimport)__attribute__((dllimport))之类的内容。这些有时被宏定义隐藏,因此检查头文件以查看是否有另一个宏可以定义,这将导致它不在函数原型中使用该属性。