首先描述一下问题,我在debug环境下运行我的程序,执行某个操作时出现这个断言错误提示如下两图所有示:
图一:
图二:
相信很多人都会遇到这样的问题,归根结底是因为使用动态/静态库出现冲突的问题,我们使用动态库一定要遵守这样的一个原则:
debug环境下程序使用debug环境编译的动态/静态库,release环境下程序使用release环境编译的动态/静态库。
运行库也要保持一致,
md程序对应md的动态/静态库,mdd程序对应mdd的动态/静态库,
mt程序对应mt的动态/静态库,mtd程序对应mtd的动态/静态库。
我按照这个原则重新检查了几遍我的工程,也没有解决这个问题,
后来一个链接的提示提醒了我,这个提示如下图所示:
图三:
看到这个提示,我产生了疑问,我的工程明明是debug环境的,为什么会使用到这个"msvcrt.lib"库呢?这个库应该是在release环境下使用的才对啊?
这个问题一真没有得到解释,我检查过很多遍我的所有使用的动态/静态库,也没有发现有release环境下编译的。
那位大拿如果有答案,可以告知一下小弟。
这个问题虽然没有答案,但这个断言错误提示的问题还是可以解决的,
于是是我在工程配置里忽略了解这个库“msvcrt.lib”,问题就解决了。
如下图所示:
这是我的一点经验,希望给那些遇到同样问题的人,提供一点帮助。