小编use*_*180的帖子

奇怪的MSC 8.0错误:"在函数调用中没有正确保存ESP的值......"

我们最近试图将一些Visual Studio项目拆分成库,一切似乎都在一个测试项目中编译和构建,其中一个库项目作为依赖项.但是,尝试运行该应用程序给了我们以下令人讨厌的运行时错误消息:

运行时检查失败#0 - ESP的值未在函数调用中正确保存.这通常是调用使用不同调用约定声明的函数指针的结果.

我们甚至从未为函数指定调用约定(__cdecl等),使所有编译器开关都处于默认状态.我检查过,项目设置与整个库和测试项目的调用约定是一致的.

更新:我们的一个开发人员将"基本运行时检查"项目设置从"两者(/ RTC1,等同于/ RTCsu)"更改为"默认",运行时间消失,使程序运行正常.我完全不相信这一点.这是一个合适的解决方案,还是一个危险的黑客?

c++ x86 stack calling-convention visual-c++

48
推荐指数
6
解决办法
6万
查看次数

链接时代码生成的优点和缺点是什么?(VS 2005)

我听说启用链接时代码生成(/ LTCG交换机)可以成为大型项目的主要优化,其中有许多库链接在一起.我的团队正在我们的解决方案的Release配置中使用它,但是长编译时间是一个真正的拖累.对其他文件所依赖的一个文件进行一次更改会触发另一个45秒的"生成代码...".发布肯定比Debug快得多,但是我们可以通过禁用LTCG并且只保留/ O2来实现相同的加速.

启用/ LTCG是否值得?

c++ visual-c++

18
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×2

visual-c++ ×2

calling-convention ×1

stack ×1

x86 ×1