ld工具可以找到库,但是mingw不能(linux)



现在,我正试图在linux上使用MinGW编译一些同时使用PoDoFo和Magick++(ImageMagick的一部分(的C++代码。我正在使用MinGW,这样我就可以为Windows编译了。当我试图编译时,我得到了这个错误:

/usr/lib/gcc/x86_64-w64-mingw32/10.2.0/../../../../x86_64-w64-mingw32/bin/ld: cannot find -lpodofo

但是,当我运行ld -L/usr/local/lib -lpodofo --verbose时,它能够找到库。我该如何解决这个问题?我有一个理论,MinGW的链接器找不到它,但原始GNU工具的链接器可以找到它。如果这是问题所在,我不太确定我会如何修复它。

正如更多信息一样,这里是我代码中的包含部分:

#include <iostream>
#include <string>
#include <podofo.h>
#include <Magick++.h>
#include <vector>
#include <thread>

这是我的编译命令:

x86_64-w64-mingw32-g++ main_multithreaded.cpp -L /usr/local/lib `Magick++-config --cppflags --cxxflags --ldflags --libs` -I"/usr/local/include/PoDoFo" -l"podofo" -DDEBUG

请注意,为了让MinGW甚至将PoDoFo添加到其包含目录中,我不得不做了一系列更改,所以这可能无法在其他人的计算机上复制。此外,我能够用g++正确地编译它

您的ld找到了该库,因为它是为使用elf64-x86-64格式的linux编译的。它与mingw不兼容,后者需要pei格式的库(可能是pei-x86-64格式(。

为了使用这个库,你需要找到该库的mingw版本,或者自己交叉编译它。

相关内容

最新更新