【发布时间】:2019-01-11 23:17:23
【问题描述】:
我的代码在 VS 2017 社区下运行良好。现在我不能再使用它了,我不得不切换到 MinGW。
我用 MinGW 编译了 boost 库,然后我使用生成的库来链接我的程序:
- Lib/libboost_program_options-mgw81-mt-d-x64-1_69.a(静态调试库)
- Lib/libboost_program_options-mgw81-mt-x64-1_69.a(静态发布库)
这是我正在使用的命令:
g++.exe -DNDEBUG -DASCII -Wall -std=c++17 -static-libgcc -static-libstdc++ -L lib -o prog.exe *.o -lboost_program_options-mgw81-mt-x64-1_69
这就是我得到的:
main.o:main.cpp:(.text+0x203): undefined reference to `__imp__ZN5boost15program_optionslsERSoRKNS0_19options_descriptionE'
main.o:main.cpp:(.text+0x3f9): undefined reference to `__imp__ZN5boost15program_options19options_description21m_default_line_lengthE'
main.o:main.cpp:(.text+0x406): undefined reference to `__imp__ZN5boost15program_options19options_description21m_default_line_lengthE'
... (more lines like these)
所有未定义的引用错误仅与 boost::program_options 调用有关(但我没有使用任何其他 boost 库)。
我试过了:
- 使用 MinGW 构建 Boost 源并链接到生成的静态库。
- 通过 vcpkg 使用我计算机上的 boost(.lib 和 .DLL)。
所有的尝试都给出了相同的错误。
我该如何解决这个问题?
环境
gcc 8.1.0
提升 1.69
视窗 10 17134
【问题讨论】: