如何在 VC++ 2010 Express 中生成纯代码(没有运行时检查)?例如,我删除了缓冲区安全检查(设置编译选项/GS-),但在我的代码中我再次看到这些调用
调用__security_init_cookie ... 调用_RTC_CheckEsp ... 调用_RTC_CheckEsp ...
如何删除这些来电?
MSVC 文档表明
__security_init_cookie
由 CRT 运行时调用,用于“使用异常处理的代码中使用 /GS(缓冲区安全检查)和 编译的代码”(添加了强调)。请参阅 http://msdn.microsoft.com/en-us/library/ms235362%28v=VS.100%29.aspx
如果运行时库本身中有依赖于已初始化的安全 cookie 的代码,无论您的代码是否使用它,我都不会感到惊讶(换句话说,运行时库代码可能已使用 /GS 进行编译,并且如果是这样,无论您的代码是否初始化,它都需要初始化 cookie)。
至于
_RTC_CheckEsp
调用 - 应该由 /RTCs
或 /RTC1
选项控制。 从您的构建中删除这些选项,并且不应该调用 _RTC_CheckEsp
。