Я понимаю, что такое неразрешенная ошибка символа, но я не понимаю, почему я получаю ее в этой конкретной ситуации с этой конкретной библиотекой. Вот вывод ошибки.
Undefined symbols for architecture x86_64:
"soci::soci_error::soci_error(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)", referenced from:
soci::type_conversion<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, void>::from_base(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, soci::indicator, std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&) in Inspector.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Обратите внимание, что я использую следующие флаги ссылок:
-L/usr/local/lib -lsoci_core -lsoci_postgresql -lpq -ldl
Отметим также, что ссылки на другие символы (например, soci::session
конструктор и деструктор) решаются.
Что я делаю неправильно? Есть ли еще какая-то социальная библиотека, с которой я тоже должен ссылаться?
РЕДАКТИРОВАТЬ: Обратите внимание, что я работаю на Mac OS X и пробовал обе установки через homebrew (через brew install soci --with-pg
) и автономные установки 3.2.2 и 3.2.1.
Я не знаю, почему это решило ошибку, но переход от libc ++ к libstdc ++ разрешил ее.
Других решений пока нет …