Возможно ли для неуправляемого приложения C ++ загружать CLR, только когда ему нужны управляемые типы? - PullRequest
0 голосов
/ 14 сентября 2009

Более того, у меня есть нативное приложение C ++, которое может не нуждаться в использовании управляемых типов. Я хотел бы, чтобы CLR оставался выгруженным до тех пор, пока не будет достигнут код пути, который фактически зависит от управляемых типов.

Я пытался сделать это, используя ключ / clr в Visual Studio 2005, но, насколько я могу судить, как только я использую этот ключ, все приложение C ++ становится управляемым приложением. Есть ли способ указать это только для определенной единицы компиляции или функции? Я пытался пометить мою функцию main () в моем тестовом приложении с помощью #pragma, но это не помешало ему загрузить CLR при запуске.

1 Ответ

2 голосов
/ 14 сентября 2009

Если у вас есть C ++ DLL в смешанном режиме, CLR загрузится, как только ваша DLL / EXE будет загружена в процесс. Нет способа изменить это поведение.

Лучший способ добиться того, что вы ищете, это разбить вашу DLL на 2 части

  1. Чисто родные детали
  2. Части, которые требуют использования управляемого кода.

Вы можете контролировать запуск CLR, контролируя загрузку # 2 в процесс. Это требует немного работы по настройке, но должен получить результат, который вы ищете.

...