![](/img/trans.png)
[英]Mingw / Boost / C++ - link error (undefined reference to __imp_GetACP) when using Boost Locale
[英]Error when statically-linking to libzbar.a: undefined reference to `_imp__GetACP@0'
我從我的程序鏈接到zbar。 我使用mingw / msys構建了zbar。 我的應用程序是使用Qt Creator構建的。
當我使用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 `_imp__GetACP@0' 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
非常感謝@skypjack,他的解決方案很有效。 我只會通過測試來添加一些我發現的東西:
PRE_TARGETDEPS
不是必需的,這3行足以使項目編譯:
INCLUDEPATH += c:/MinGW/msys/1.0/local/include
LIBS += c:/MinGW/msys/1.0/local/lib/libzbar.a
LIBS += c:/MinGW/lib/libiconv.a
這很奇怪,因為我甚至在將問題發布到SO之前就清楚地記得嘗試過這個。 但在交換最后兩行之后 :
INCLUDEPATH += c:/MinGW/msys/1.0/local/include
LIBS += c:/MinGW/lib/libiconv.a
LIBS += c:/MinGW/msys/1.0/local/lib/libzbar.a
錯誤返回。 我確實在 libzbar.a
之前放了libiconv.a
,所以錯誤確實是因為鏈接順序。
編輯:最后,它甚至與Qt Creator自己的libiconv一起工作,只是我需要在zbar之后添加它:
LIBS += -Lc:/MinGW/msys/1.0/local/lib -lzbar -liconv
嘗試使用.pro文件,如下所示:
TEMPLATE=app
TARGET=appname
SOURCES=main.cpp
PRE_TARGETDEPS += c:/MinGW/msys/1.0/local/lib/libzbar.a
PRE_TARGETDEPS += c:/MinGW/msys/1.0/local/lib/libiconv.a
INCLUDEPATH += c:/MinGW/msys/1.0/local/include
win32:LIBS += c:/MinGW/msys/1.0/local/lib/libzbar.a
win32:LIBS += c:/MinGW/msys/1.0/local/lib/libiconv.a
// ... continue
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.