1

我很难在我的项目中使用 yaml-cpp 0.3.0 我下载了 yaml,并像http://code.google.com/p/yaml-cpp/所说的那样使用 VS 9 2008 WIN 64构建它. 所以,我得到了 yaml-cpp.dll 和 yaml-cpp.lib 我在 VS 2010 express 上有一个 c++ 项目,我正在尝试链接库:我去项目属性 - c/c++ 通用和附加包括具有 yaml-cpp 头文件的目录。然后我去链接器并添加我的lib目录的路径,然后我去链接器 - 输入并添加我的.lib文件,然后我去VC++目录并在库目录和参考目录中添加我的lib目录的路径然后我尝试构建这个简单的代码:

std::ifstream fin("test.yaml");
YAML::Parser parser(fin);
YAML::Node doc;
while(parser.GetNextDocument(doc)) {
    //do nothing yet
}

我遇到了几个链接问题,如下所示:

error LNK2019: unresolved external symbol "public: __thiscall YAML::Node::Node(void)" (??0Node@YAML@@QAE@XZ) referenced in function "public: __thiscall Parser::Parser(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0Parser@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)


error LNK2019: unresolved external symbol "public: __thiscall YAML::Parser::~Parser(void)" (??1Parser@YAML@@QAE@XZ) referenced in function "public: __thiscall Parser::Parser(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0Parser@@QAE@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)

谁能帮我?我在这里用头撞墙。

4

1 回答 1

1

正如你所说,你有一个来自 YAML 的 DLL,我假设你-DBUILD_SHARED_LIBS=ON在使用 VS2008 构建时指定了,所以你最终得到了一个lib动态链接(在运行时到 DLL)而不是静态链接(在编译时)。

如果以上正确,则可能是 VS2008 和 VS2010 之间的差异导致了问题。例如,请在此处查看此帖子。要快速查看这是否是原因,在您的 VS2010 项目属性中,将 设置Platform ToolsetV90并查看是否有帮助。

此外,请确保您为同一个 CPU 编译了两个项目 - 即都为 32 位或都为 64 位。

于 2013-03-29T10:36:12.957 回答