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