У меня есть код, который отлично работает в рамках VS 2017 Community. Теперь я больше не могу его использовать, и мне пришлось переключиться на MinGW.
Я скомпилировал библиотеку boost с MinGW и затем использовал сгенерированные библиотеки для связи своей программы:
- 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
(но я не использую никакой другой библиотеки повышения).
Я пробовал:
- Building Boost source С MinGW и связью с сгенерированной статической библиотекой.
- Использование надстройки (.lib и .DLL), которая была у меня на компьютере с vcpkg.
Все попытки дали одинаковые ошибки.
Как я могу это исправить?
Окружающая среда
gcc 8.1.0
буст 1.69
Windows 10 17134