在VC++中没有运行时检查的生成代码

Kmd*_*Kmd 2 c c++ compiler-construction visual-c++

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

call __security_init_cookie
...
call _RTC_CheckEsp
...
call _RTC_CheckEsp
...

如何删除这些电话?

Mic*_*urr 7

MSVC文档表明__security_init_cookieCRT运行时调用"使用/ GS编译的代码(缓冲区安全检查)使用异常处理的代码"(强调添加).请参阅http://msdn.microsoft.com/en-us/library/ms235362%28v=VS.100%29.aspx

如果运行时库中的代码依赖于已经初始化的安全cookie,代码是否使用它(换句话说,运行时库代码可能已经使用/ GS编译,并且如果所以,它需要初始化cookie,无论你的代码是否存在).

至于_RTC_CheckEsp通话 - 应该由/RTCs/RTC1选项控制.从您的构建中删除这些选项,应该没有调用_RTC_CheckEsp.