Как Осуществить компилятор C++ для использования определенной версии CRT?

Я хотел бы убедиться, что вы соответствуете Системным требованиям

11
задан Mihai Limbășan 8 April 2009 в 14:27
поделиться

3 ответа

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

Сначала убедитесь, что манифест не генерируется при каждой сборке (на VS2005: свойства конфигурации / компоновщик / файл манифеста / генерация манифеста), поскольку это приведет к перезаписи изменений, внесенных вами вручную. Также убедитесь, что изоляция включена. Далее найдите файл манифеста - должен быть в $ (IntDir) (например, Debug). Вы должны увидеть раздел, похожий на -

  <dependency>
    <dependentAssembly>
      <assemblyIdentity type='win32' name='Microsoft.VC80.DebugCRT' version='8.0.50727.762' processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b' />
    </dependentAssembly>
  </dependency>

(для отладочных сборок, конечно). Вам необходимо отредактировать атрибуты version и publicKeyToken элемента CRT. You can inspect the files at your local WINDOWS\WinSxS folder to see the versions available. Check here how to extract the publicKeyToken once you find the version you want. (Although I'd first try and look directly into manifests of other projects, linking against your desired CRT version).

If you do go there, expect some rough water. You may have some luck if your application is a console app that does not link against other Side-by-Side components (MFC, OpenMP, etc.). If your application is non-trivial, I'd be surprised if there aren't some intricate version dependencies amont the SxS components.

(edit) You'd also need to distribute with your application the specific CRT you're using. Here's someone who did that.

10
ответ дан 3 December 2019 в 09:21
поделиться

Не пытайтесь использовать VS9 и ссылаться на другую версию CRT.

Если вам нужно, чтобы ваше приложение связывалось с другой ЭЛТ, скажем, ЭЛТ VS8, то вы должны скомпилировать и связать ваше приложение в этой версии VS.

0
ответ дан 3 December 2019 в 09:21
поделиться

Самый простой способ - создать свою DLL с версией VC ++, использующей CRT, совместимый с TFS.

Я не думаю, что будет хорошей идеей просто связать вашу DLL с другой версией CRT, если только вы не используете ту же версию заголовочных файлов. И самый простой способ сделать это - использовать правильную версию VC ++ ...

Если вы все еще хотите попробовать, вы можете:

  • перейти в «Настройки конфигурации-> Линкер-> Ввод-> Игнорировать конкретную библиотеку». "и введите crt, который вы используете (libc.lib, libcmt.lib и т. д., см. эту статью проекта кода для получения подробной информации).
  • Введите имя версии CRT, которую вы хотите использовать, в «Настройки конфигурации-> Линкер-> Ввод-> Дополнительные зависимости» и его путь в «Конфигурационные настройки-> Линкер-> Общие->
2
ответ дан 3 December 2019 в 09:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: