在 VC++ 中生成无需运行时检查的代码

问题描述 投票:0回答:2

如何在 VC++ 2010 Express 中生成纯代码(没有运行时检查)?例如,我删除了缓冲区安全检查(设置编译选项/GS-),但在我的代码中我再次看到这些调用

调用__security_init_cookie
...
调用_RTC_CheckEsp
...
调用_RTC_CheckEsp
...

如何删除这些来电?

c++ c visual-c++
2个回答
7
投票

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


3
投票
© www.soinside.com 2019 - 2024. All rights reserved.