Visual Studio: ошибка командной строки D8016: параметры командной строки "/Ox " и "/ RTC " несовместимы

Я использую Visual Studio 2012 для написания проекта C++. Я пытался использовать оптимизацию O2 или Ox при создании проекта. Но это вызвало ошибку, которая "cl: ошибка командной строки D8016: параметры командной строки "/Ox " и "/ RTC " несовместимы."

Я пытался найти решение в интернете, но это не сработало для меня.

надеюсь, кто-нибудь сможет мне помочь.

лучшие

3 ответов


во-первых, ваш код ошибки неверен. Вероятно, вы допустили ошибку при публикации, как это должно быть D8016, а не D0816. Надеюсь, вы не совершили других ошибок, которые могли бы ввести нас в заблуждение...

кроме этого, сообщение об ошибке ясно:

Visual Studio: ошибка командной строки D0816: параметры командной строки "/Ox " и "/ RTC " несовместимы

но можно посмотреть описание этой ошибки в здесь:

Ошибка Командной Строки D8016

короткий ответ - как ошибка говорит, Вы не можете использовать оба одновременно. Жизнь полна компромиссов, вам нужно будет выбрать любой из них в зависимости от того, что для вас важнее.

раствор для выключения /RTC для сборки выпуска и используйте его только для отладочных сборок для поиска проблем. Вижу соответствующая документация, который также доступен с первого ссылка выше, для более подробной информации:

проверка ошибок во время выполнения-это способ поиска проблем в запущенном коде; дополнительные сведения см. В разделе Как использовать собственные проверки во время выполнения.

Если вы скомпилируете свою программу в командной строке, используя любой из параметров компилятора /RTC, любые инструкции Pragma optimize в вашем коде будут беззвучно завершаться ошибкой. Это связано с тем, что проверки ошибок во время выполнения недопустимы в сборке выпуска (оптимизированной).

вы должны использовать /RTC для сборок разработки; /RTC не должен использоваться для розничной сборки. /RTC нельзя использовать с оптимизациями компилятора (/o Options (Optimize Code)). Изображение программы, построенное с /RTC, будет немного больше и немного медленнее, чем изображение, построенное с /Od (до 5 процентов медленнее, чем сборка /Od).


на документация MSDN: вы не можете использовать /RTC с /O Параметры (Оптимизация Кода).

Если вы хотите использовать оптимизацию, выключить /RTC флаг (или отключить оптимизацию проверки времени выполнения).

или, чтобы избежать всего этого, создайте отдельные конфигурации сборки, которые имеют отдельные флаги по мере необходимости (например, сборка отладки и выпуска).


в свою очередь /RTC off через GUI, просто перейдите к ProjectProperties/C / C++ / CodeGeneration:

enter image description here

и набор "все сделано удобно, просто проверки" по умолчанию.


... или удалить /RTC из командной строки, Если построен через интерфейс командной строки


... или отключите его в vcxproj-файле, изменив

<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>

до

<BasicRuntimeChecks>Default</BasicRuntimeChecks>

в соответствующий Coniguration.