2012-10-16 18 views
0

是否有人用mingw使用libraw?我試圖編譯程序並得到以下錯誤:Mingw and libraw結果未定義的參考

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

從這些符號名稱看來,您正在嘗試針對libraw的DLL版本進行編譯(由_imp___前綴暗示)。檢查你的libraw頭文件,並確保函數名稱前面沒有__declspec(dllimport)__attribute__((dllimport))之類的東西。這些有時被宏定義隱藏,所以檢查頭文件以查看是否有另一個宏可以定義,這會導致它不在函數原型中使用該屬性。

+0

感謝您指出了這一點。我看着頭文件,有這些dllimport的東西。無論如何與預處理器定義LIBRAW_NODLL = 1我得到它的工作,但現在我遇到了另一個問題,我發佈在這裏:http://stackoverflow.com/questions/12921911/mingw-libgcc-s-sjlj-1-dll-is -失蹤 – Maecky