Общий код без проверок во время выполнения в VC ++ - PullRequest
2 голосов
/ 24 августа 2011

Как мне сгенерировать чистый код (без проверок во время выполнения) в VC ++ 2010 Express? Например, я удалил проверку безопасности буфера (установил опцию компиляции / GS-), но в своем коде я снова увидел эти вызовы

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

Как мне удалить эти звонки?

Ответы [ 2 ]

7 голосов
/ 24 августа 2011

Документы MSVC указывают, что __security_init_cookie вызывается средой выполнения CRT для "кода, скомпилированного с / GS (проверка безопасности буфера) и в коде, который использует обработку исключений" (выделение добавлено). Смотри http://msdn.microsoft.com/en-us/library/ms235362%28v=VS.100%29.aspx

Я не удивлюсь, если в самой библиотеке времени выполнения есть код, который зависит от того, был ли инициализирован cookie-файл безопасности, использует ли он ваш код (другими словами, код библиотеки времени выполнения может быть скомпилирован с / GS и, если это так, он должен инициализировать куки, независимо от того, делает ли это ваш код).

Что касается вызова _RTC_CheckEsp - он должен управляться опцией /RTCs или /RTC1. Удалите эти опции из вашей сборки, и не должно быть звонков на _RTC_CheckEsp.

3 голосов
/ 24 августа 2011

Отключить / переключатель компиляции RTC http://msdn.microsoft.com/en-us/library/8wtf2dfz.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...