我在vs2008中编译一个c ++静态库,在解决方案中我也有一个使用lib的启动项目,并且工作正常.
但是当在另一个解决方案中使用lib时,我得到运行时检查失败."ESP的值没有在功能调用中正确保存"通过代码我注意到函数foo()在崩溃之前跳转到bar().有问题的函数只是常规函数而没有函数指针.
任何人都知道可能会发生什么,以及为什么它在使用同一解决方案中的lib时有效?
编辑:函数(方法)是类的一部分,如果有帮助的话.
我有一个Visual Studio 2005解决方案,其中包含几个彼此独立构建的项目.主项目静态链接其他项目.我在其中一个静态链接库中得到了非常奇怪的STL向量损坏.例如,我声明一个std :: vector然后执行一个sort( thatVector.begin(), thatVector.end() ),但是当我调试它并查看反汇编时,我看到:
std::vector<SomeOtherClass<SomeOtherTemplateType>,std::allocator<SomeOtherClass<SomeOtherTemplateType> > >::begin
Run Code Online (Sandbox Code Playgroud)
令人难以置信的奇怪的是,SomeOtherClass并且SomeOtherTemplate在主项目中声明,所以这个库应该完全不知道它们.
我试过冻结所有其他线程,认为其中一个可能是腐败thatVector,但没有骰子.我完全失去了.有没有人经历过这样的事情?
编译信息: - 主程序/ Zi,自定义优化(基本上是可调试的发布版本) - 静态库/ Zi,/ Od
链接信息:/ DEBUG