我有一个使用__cdecl
调用约定(msvc2010)编译的项目,我使用默认设置使用相同的编译器编译了 boost。
该项目与 boost 相关联,但我在运行时收到如下断言消息: File: ...\boost\boost\program_options\detail\parsers.hpp Line: 79
运行时检查失败 #0 - ESP 的值未在函数调用中正确保存。这通常是调用使用一种调用约定声明的函数和使用另一种调用约定声明的函数指针的结果。
有以下问题:
- 在 Windows 上默认使用什么调用约定来提升构建(msvc2010)
- 如何使用 __cdecl 调用约定编译 boost
- 为什么 boost 无法阻止与具有不同调用约定的代码链接?我知道 boost 具有非常智能的库自动包含代码。
更新#1
看起来 boost 确实使用正确的调用约定进行编译和链接,但在运行时我仍然遇到上述问题。我使用相同的代码做了一个示例应用程序,它可以工作,但在我的应用程序中它失败了。唯一的区别可能来自项目配置或包含/stdafx.h