我正在尝试用C ++学习YAML,我使用CMake将给定的yaml-cpp文件用VC ++ Express 2010制作成.dll和.lib文件。我设置项目的方式与设置SFML等其他库的方式相同。
我的问题是,当我尝试构建yaml-cpp网站上给出的示例代码的发行版时,我得到:
Ogre
Dragon
Wizzard
然而,当我尝试构建一个Debug版本时,我得到:
Assertion failed: false, file d:\microsoft visual studio 10.0\vc\include\yaml-cp
p\nodeimpl.h, line 39
我不知道如何处理这件事。我是否需要构建库的调试版本?如果有,怎么样?如果我设法改变某些东西,我不知道哪个项目选项会影响这个。
当我正在编译时,我收到警告:
d:\microsoft visual studio 10.0\vc\include\yaml-cpp\conversion.h(51): warning C4146: unary minus operator applied to unsigned type, result still unsigned
有很多模板打印输出,f.e。 :
1> d:\microsoft visual studio 10.0\vc\include\yaml-cpp\nodereadimpl.h(35) : see reference to function template instantiation 'bool YAML::ConvertScalar<T>(const YAML::Node &,T &)' being compiled
1> with
1> [
1> T=unsigned int
1> ]
这是我的问题吗?错误的CMake文件和编译?
答案 0 :(得分:0)
> yaml_test.exe!main() Line 108 C++
yaml_test.exe!__tmainCRTStartup() Line 555 + 0x19 bytes C
yaml_test.exe!mainCRTStartup() Line 371 C
kernel32.dll!7c817077()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
中止:
doc [i]&gt;&gt;怪物;
程序不会尝试输入重载功能。
在我自己的代码中,当我尝试使用我的第一个&gt;&gt;时,它会中断运算符,它是int中的一个构建。
我正在使用http://pastebin.com/PdKWDgQa中的代码,但对于原始的yaml-cpp示例代码,它也是如此。 Release模式下的输出是正确的,Debug停止并返回相同的断言代码。
作为参考,在&gt;&gt;中的{括号中的发布模式下调用堆栈怪物的功能看起来像这样:
> yaml_test.exe!operator>>(const YAML::Node & node={...}, Monster & monster={...}) Line 36 C++
yaml_test.exe!main() Line 109 C++
msvcr100.dll!_initterm(void (void)* * pfbegin=0x00000001, void (void)* * pfend=0x003a5050) Line 873 C
yaml_test.exe!__tmainCRTStartup() Line 555 + 0x17 bytes C
kernel32.dll!7c817077()
[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]
编辑:
实际上,我已经重建了我使用CMake作为Debug制作的yaml-cpp项目,当我现在使用它时一切运行正常。如果这很明显,我很抱歉,我对这些问题不熟悉。