链接错误:在Windows上使用MinGW连接Boost库

4

我正在使用Windows 7 64x,并已安装MinGW。

我的目标是在Eclipse上使用boost库(这里是 boost_program_options)。

boost库已正确安装,我可以在 C:\MinGW\boost_1_53_0\stage\lib 下看到文件 libboost_program_options-vc90-mt-gd-1_53.lib

现在我尝试通过进入 属性 -> C/C++构建 -> 设置 -> MinGW C++链接器 -> 库 来在Eclipse中链接它:

这里我输入 库搜索路径 (-L): C:\MinGW\boost_1_53_0\stage\lib 并为 (-l) 输入: boost_program_options-vc90-mt-gd-1_53

尝试构建时,我收到以下错误信息:

11:06:54 **** Build of configuration Debug for project AP ****
make all 
Building file: ../src/HW1EX1.cpp
Invoking: GCC C++ Compiler
g++ -I"C:\MinGW\boost_1_53_0" -I"C:\MinGW\boost_1_53_0\boost\program_options" -I"C:\MinGW\boost_1_53_0\boost" -I"C:\MinGW\boost_1_53_0\boost\program_options\detail" -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/HW1EX1.d" -MT"src/HW1EX1.d" -o "src/HW1EX1.o" "../src/HW1EX1.cpp"
Finished building: ../src/HW1EX1.cpp

Building target: AP.exe
Invoking: MinGW C++ Linker
g++ -LC:\MinGW\boost_1_53_0\stage\lib -static-libgcc -o "AP.exe"  ./src/HW1EX1.o   -lboost_program_options-vc90-mt-gd-1_53
c:/mingw/bin/../lib/gcc/mingw32/4.6.2/../../../../mingw32/bin/ld.exe: cannot find -lboost_program_options-vc90-mt-gd-1_53
collect2: ld returned 1 exit status
make: *** [AP.exe] Error 1

11:06:57 Build Finished (took 3s.80ms)

有人知道我可能做错了什么吗?
感谢您的时间。
1个回答

2
你显然已经下载了使用Microsoft Visual C++编译器编译的二进制分发包(...-vc90-...是一个提示)。或者你已经自己构建了它,但是你是用Microsoft Visual C++编译器来构建的。你必须使用MinGW从源代码构建Boost,因为你不能混合不同C++编译器生成的C++代码。换句话说,在你的情况下,你不能使用MinGW链接到由Microsoft Visual C++编译器生成的库。

此外,我怀疑-LC:\MinGW\boost_1_53_0\stage\lib不会起作用,因为它有反斜杠并且没有引号。所以它应该是-L"C:\MinGW\boost_1_53_0\stage\lib"或者-LC:/MinGW/boost_1_53_0/stage/lib。我更喜欢第二种变体,所以尝试将反斜杠改为正斜杠,看看效果如何。还要仔细检查libboost_program_options-mgw46-1_53.a是否真的在C:\MinGW\boost_1_53_0\stage\lib中。


谢谢您指出这一点,我已经用boost_program_options-mgw46-1_53替换了boost_program_options-vc90-mt-gd-1_53,但我仍然收到相同的错误信息。有其他人有什么想法吗? - user1431340

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接