Поддержка библиотек для смешанных сборок
В Visual C++ поддерживается использование стандартной библиотеки C++, библиотеки среды CLR (CRT), а также библиотеки ATL и MFC для приложений, скомпилированных с помощью параметра /clr (компиляция CLR). Эти библиотеки также позволяют существующим приложениям использовать функции платформы .NET Framework.
Указанная поддержка включает следующие новые библиотеки импорта и DLL.
Библиотека Msvcmrt[d].lib для компиляции с помощью параметра /clr. К этой библиотеке импорта подключаются смешанные сборки.
Библиотеки Msvcm90[d].dll и Msvcurt[d].lib для компиляции с помощью параметра /clr:pure. Библиотека DLL является смешанной сборкой, предоставляющей поддержку управляемой среды выполнения С (CRT), а также частью управляемой сборки, помещенной в глобальный кэш сборок. Чистые сборки подключаются к этой библиотеке импорта и в итоге связываются с библиотекой Msvcm90.dll.
Поддержка этой библиотеки предоставляет некоторые дополнительные преимущества.
Библиотека CRT и стандартная библиотека C++ доступны как для смешанного, так и для чистого кода. Предоставляемые библиотека CRT и стандартная библиотека C++ не подлежат проверке; вызовы в конечном счете перенаправляются к тем же библиотеке CRT и стандартной библиотеке C++, которые используются машинным кодом.
Правильная унифицированная обработка исключений для чистых и смешанных образов.
Статическая инициализация переменных C++ для чистых и смешанных образов.
Поддержка машинным кодом использования переменных на уровне AppDomain и на уровне процесса.
Разрешение загрузчику блокировать ситуации, которые вызывали проблемы при обращении к смешанным библиотекам DLL из Visual C++ .NET и Visual C++ .NET 2003
Кроме того, для данной поддержки характерны следующие ограничения.
Поддерживается только модель DLL среды CRT (для кода, скомпилированного при помощи как параметра /clr, так и параметра /clr:pure).
Нельзя смешивать смешанные и чистые объекты в одном образе, если эти объекты используют библиотеки Visual C++ (поскольку в чистом образе все объекты должны быть чистыми). Если их смешать, произойдет ошибка времени компоновки.
Следует обновить среду CLR до последней версии, поскольку поддержка для предыдущих версий не гарантируется. Например, код, скомпилированный с этими усовершенствованиями, не сможет быть выполнен в среде CLR версии 1.x.