У меня проблемы с Boost и Mac OS X.
Я использую Qt Creator в качестве платформы для разработки проектов на C++, прежде всего из-за IDE и qmake
.
Прямо сейчас я работаю над приложением C++, которое должно быть кросс-платформенным, но я не хочу использовать саму структуру Qt
. Вместо этого я использую библиотеки STD (C++11), Poco
и Boost
.
Одна из вещей, которую я пытаюсь достичь, — это система плагинов, которая загружает динамически подключаемые библиотеки во время выполнения.
Я видел несколько проектов, таких как Boost-extension
, который больше не поддерживается, и несколько других.
Сейчас я использую общие библиотеки Poco и их Class Loader
. Я внимательно слежу за учебным пособием в конце презентации. К сожалению, я не могу заставить его работать, и я получаю следующую ошибку при компиляции, где класс ServiceBase
является интерфейсом моего плагина.
Undefined symbols for architecture x86_64:
"Poco::SharedLibrary::getSymbol(std::string const&)", referenced from:
Poco::ClassLoader<ServiceBase>::loadLibrary(std::string const&, std::string const&) in main.o
"Poco::SharedLibrary::hasSymbol(std::string const&)", referenced from:
Poco::ClassLoader<ServiceBase>::loadLibrary(std::string const&, std::string const&) in main.o
"Poco::SharedLibrary::SharedLibrary(std::string const&)", referenced from:
Poco::ClassLoader<ServiceBase>::loadLibrary(std::string const&, std::string const&) in main.o
"Poco::SystemException::SystemException(std::string const&, int)", referenced from:
Poco::MutexImpl::unlockImpl() in main.o
Poco::MutexImpl::lockImpl() in main.o
"Poco::LibraryLoadException::LibraryLoadException(std::string const&, std::string const&, int)", referenced from:
Poco::ClassLoader<ServiceBase>::loadLibrary(std::string const&, std::string const&) in main.o
ld: symbol(s) not found for architecture x86_64
У меня есть связанные библиотеки Poco, и почти все, кажется, реализовано.
Любые советы о том, как это исправить?
P.S. Я также ищу альтернативы реализации системы плагинов, возможно, более мощные и, безусловно, кроссплатформенные.