簡體   English   中英

靜態鏈接到libzbar.a時出錯:未定義引用`_imp__GetACP @ 0'

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM