Хобрук: Ваш путь к мастерству в программировании

Почему /clr несовместим с /mt и /mtd в Visual Studio?

кто-нибудь может объяснить мне, как и почему /clr несовместим с /mtd? Какая альтернатива этому? Что произойдет внутри, если я использую /md или /mdd?

Насколько я знаю, мы не используем совместно /clr и /mtd. Может кто-нибудь объяснить, есть ли способ сделать это? И, пожалуйста, объясните мне, как и почему /clr несовместим с /mt и /mtd в Visual Studio?


  • Почему вам нужны и /clr, и /mtd? Если вы сообщите нам, чего вы пытаетесь достичь, мы можем помочь вам в этом. 02.06.2009
  • .. Может ему просто интересно :) 02.06.2009

Ответы:


1

Я ожидаю, что подсказка дана здесь:

Если вы используете переключатель компилятора /clr, ваш код будет связан с библиотекой импорта, msvcmrt.lib. Библиотека импорта ссылается на новую библиотеку msvcm80.dll, которая обеспечивает прокси-сервер между вашим управляемым кодом и собственной CRT. Вы не можете использовать статически связанную CRT (параметры /MT или /MTd) с параметром /clr. Вместо этого используйте динамически подключаемые библиотеки (/MD или /MDd).

Флаг /clr заставляет ваш код ссылаться на новую dll msvcm80.dll — это действует как прокси между вашим управляемым кодом и CRT. Трудно точно сказать, что делает этот прокси, но я предполагаю, что он действует как интерфейс для выделения памяти в управляемой куче, сборки мусора, управляемых потоков и тому подобного. Если вы слинкуете статические версии CRT, то прокси не сможет перехватывать ваши обращения к библиотекам времени выполнения.

02.06.2009
  • отличный ответ, могу ли я как-то использовать C++/CLI с флагом /mt? 26.04.2015
  • @Gilad Зачем тебе это? Библиотека, на которую вы ссылаетесь, является потокобезопасной, и нет причин для статической компоновки, если вы все равно запрашиваете присутствие CLR, поэтому я не вижу никаких недостатков. 14.08.2015
  • Я думаю, что основная причина возможности связывания со статическими библиотеками CRT заключается в том, что НЕ нужно устанавливать распространяемые файлы на целевых машинах. 14.09.2015
  • Новые материалы

    Решения DBA Metrix
    DBA Metrix Solutions предоставляет удаленного администратора базы данных (DBA), который несет ответственность за внедрение, обслуживание, настройку, восстановление базы данных, а также другие..

    Начало работы с Блум
    Обзор и Codelab для генерации текста с помощью Bloom Оглавление Что такое Блум? Некоторые предостережения Настройка среды Скачивание предварительно обученного токенизатора и модели..

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

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

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...