我從我的程序鏈接到zbar。我已經使用mingw/msys構建了zbar。我的應用程序是使用Qt Creator構建的。靜態鏈接到libzbar.a時出錯:未定義引用到_imp__GetACP @ 0
當我使用libzbar.dll.a
動態鏈接到zbar時,它編譯並運行正常。當我鏈接到libzbar.a
,構建我的應用程序失敗,出現鏈接錯誤:
C:/Qt/Tools/mingw491_32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/lib/../lib/libiconv.a(localcharset.o):localcharset.c:(.text+0x7): undefined reference to `[email protected]' collect2.exe: error: ld returned 1 exit status
這令人費解的路徑 - C:/Qt/Tools/mingw491_32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/lib/../lib/libiconv.a
- 解析爲C:\Qt\Tools\mingw491_32\i686-w64-mingw32\lib\libiconv.a
。所以看起來Qt Creator試圖鏈接自己的libiconv.a
,它缺少一些libzbar.a
需要使用的功能。
我不知道如何讓Qt Creator中使用MSYS libiconv.a
,我嘗試這樣做:
LIBS += c:/mingw/lib/libiconv.a
LIBS += $$PWD/zbar/lib/libzbar.a
但它沒有任何效果,我得到了同樣的錯誤。我如何說服Qt Creator使用c:/mingw/lib/libiconv.a
而不是自己的版本?
編輯:這裏是再現錯誤最小代碼:
#define NULL 0
#include <zbar.h>
int main()
{
zbar::ImageScanner scanner;
return 0;
}
而在.pro文件,我有:
INCLUDEPATH += c:/MinGW/msys/1.0/local/include
LIBS += -Lc:/MinGW/msys/1.0/local/lib -lzbar
您是否試圖與'的win32:LIBS + = C :/ MinGW的/ lib目錄/ libiconv.a'?甚至是'PRE_TARGETDEPS + = c:/ mingw/lib/libiconv.a'。 – skypjack
@skypjack感謝您的輸入。我試了兩次,但錯誤仍然沒有改變。 – sashoalm
這將有助於讓項目文件或假項目重現錯誤,您是否可以提供其中至少一項? – skypjack