Visual Studio: ошибка командной строки D8016: параметры командной строки "/Ox " и "/ RTC " несовместимы
Я использую Visual Studio 2012 для написания проекта C++. Я пытался использовать оптимизацию O2 или Ox при создании проекта. Но это вызвало ошибку, которая "cl: ошибка командной строки D8016: параметры командной строки "/Ox " и "/ RTC " несовместимы."
Я пытался найти решение в интернете, но это не сработало для меня.
надеюсь, кто-нибудь сможет мне помочь.
лучшие
3 ответов
во-первых, ваш код ошибки неверен. Вероятно, вы допустили ошибку при публикации, как это должно быть D8016, а не D0816. Надеюсь, вы не совершили других ошибок, которые могли бы ввести нас в заблуждение...
кроме этого, сообщение об ошибке ясно:
Visual Studio: ошибка командной строки D0816: параметры командной строки "/Ox " и "/ RTC " несовместимы
но можно посмотреть описание этой ошибки в здесь:
короткий ответ - как ошибка говорит, Вы не можете использовать оба одновременно. Жизнь полна компромиссов, вам нужно будет выбрать любой из них в зависимости от того, что для вас важнее.
раствор для выключения /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:
и набор "все сделано удобно, просто проверки" по умолчанию.
... или удалить /RTC
из командной строки, Если построен через интерфейс командной строки
... или отключите его в vcxproj-файле, изменив
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
до
<BasicRuntimeChecks>Default</BasicRuntimeChecks>
в соответствующий Coniguration.