c++ - 使用 yaml-cpp 0.5 DLL 时出现链接器错误

标签 c++ windows visual-studio-2010 yaml-cpp

我在 Visual Studio 2010 中有一个 C++ 项目,我在其中将我的代码从旧的 yaml-cpp 0.3 API 移植到新的 0.5 API。我已经设置了 Boost,使用 CMake 构建了新的 DLL,设置了包含和库路径,更新了所有代码以匹配新的 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

最佳答案

这是一个已知问题。可以关注issue page在项目页面上。

关于c++ - 使用 yaml-cpp 0.5 DLL 时出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18245160/

相关文章:

c++ - 将带有 C header 的文件夹转换为带有 C++ header 的文件夹的最简单方法是什么?

.net - 我需要安装什么才能使代码合约与 2010 兼容

C++ 按生命对敌人进行排序

c++ - 头文件和c++文件的问题

windows - 如何在 Windows 中使用 KDiff3 预处理器命令?

c++ - 列表框属性值未出现在 C++ 自定义操作 Wix 中?

c++ - 调试和发布版本之间的 QTextBrowser 行为不同

C++ iomanip 对齐

python - 系统路径中安装了多个Python

windows - 将应用程序的 64 位和 32 位版本滚动到同一个二进制文件中?