gpt4 book ai didi

c++ - 静态链接到 libzbar.a 时出错 : undefined reference to `_imp__GetACP@0'

转载 作者:太空狗 更新时间:2023-10-29 20:56:38 35 4
gpt4 key购买 nike

我从我的程序链接到 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

This convoluted path - C:/Qt/Tools/mingw491_32/bin/../lib/gcc/i686-w64-mingw32/4.9.1/../../../../i686-w64-mingw32/lib/../lib/libiconv.a - resolves to C:\Qt\Tools\mingw491_32\i686-w64-mingw32\lib\libiconv.a. So it seems that Qt Creator is trying to link against its own libiconv.a, which is missing some functions that libzbar.a needs to use.

I'm not sure how to make Qt Creator use the msys libiconv.a, I tried this:

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

错误返回。我确实将 libiconv.a 放在 libzbar.a 之前,所以错误确实是因为链接顺序。

编辑:最后,连Qt Creator自带的libiconv也能用,只是我需要在zbar之后加上:

LIBS += -Lc:/MinGW/msys/1.0/local/lib -lzbar -liconv

关于c++ - 静态链接到 libzbar.a 时出错 : undefined reference to `_imp__GetACP@0' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33174361/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com