Ошибки компоновщика при использовании DLL-библиотеки yaml-cpp 0.5

У меня есть проект C ++ в Visual Studio 2010, где я переносю свой код из старого API yaml-cpp 0.3 в новый API 0.5. Я установил Boost, создал новые библиотеки DLL с помощью CMake, настроил пути включения и пути к библиотекам, обновил весь код, чтобы он соответствовал новому API, и все прекрасно скомпилировалось.

Тем не менее, когда он достигает ссылки, я сталкиваюсь с кучей ошибок компоновщика, как это:

error LNK2001: unresolved external symbol "public: static bool __cdecl YAML::convert<bool>::decode(class YAML::Node const &,bool &)"error LNK2001: unresolved external symbol "private: void __thiscall YAML::detail::node_data::insert_map_pair(class YAML::detail::node &,class YAML::detail::node &)"error LNK2001: unresolved external symbol "public: void __thiscall YAML::detail::memory_holder::merge(class YAML::detail::memory_holder &)"error LNK2001: unresolved external symbol "public: class YAML::detail::node & __thiscall YAML::detail::memory::create_node(void)"error LNK2001: unresolved external symbol "public: void __thiscall YAML::detail::node_data::mark_defined(void)"error LNK2001: unresolved external symbol "public: void __thiscall YAML::detail::node_data::set_null(void)"...

Похоже, что не все символы экспортируются в DLL, но я не знаю, как это исправить. Я пытался очистить все, перестроить, отладить / выпустить, разные версии VS и т. Д. С yaml-cpp 0.3 все работало нормально, но я действительно хочу новый API. Эти настройки я использую в CMake для сборки библиотеки:

APPLE_UNIVERSAL_BIN = false
BUILD_SHARED_LIBS = true
MSVC_SHARED_RT = true
MSVC_STHREADED_RT = false
YAML_CPP_BUILD_CONTRIB = false
YAML_CPP_BUILD_TOOLS = false

0

Решение

Это известная проблема. Вы можете следовать страница вопроса на странице проекта.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]