Я не могу понять ошибку привязки для использования boost :: program_options. Вот пример кода C++:ошибка связывания для boost :: program_options
# sample_code.cpp
#include <boost/program_options.hpp>
int main()
{
boost::program_options::options_description description("Test");
}
Я также установил повышение 1.57.0 с использованием MacPorts на Йосемити 10.10.2. Вот соответствующая библиотека:
/opt/local/lib/libboost_program_options-mt.a
Давайте скомпилировать и скомпоновать этот код:
alias g++='/opt/local/bin/g++-mp-5 -std=gnu++14 -I/opt/local/include -L/opt/local/lib'
g++ sample_code.cpp -lboost_program_options-mt
И он терпит неудачу во время связывания:
Undefined symbols for architecture x86_64:
"boost::program_options::options_description::options_description(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned int)"
ld: symbol(s) not found for architecture x86_64
Любые мысли?
Это работает, если вы отмените порядок аргументов компилятора в использовании псевдонимов? Если это так, http://stackoverflow.com/a/24675715/962089 – chris
не очень. Я также пробовал clang ++ и CMake со всеми его аргументами, связанными с повышением, и это не помогло! –
Что значит «на самом деле»? Библиотека _does_ идет после '.cpp'. –