Где я могу инициализировать управляемую С++/CLI DLL?
Что есть, или я должен спросить, есть ли эквивалент DllMain при создании DLL с использованием С++/CLI?
Существуют ли какие-либо ограничения на то, что нельзя вызвать из этого кода инициализации?
Ответ 1
Дэн: Что касается блокировки загрузчика, загрузки С++/CLI задержки CLR и правильной инициализации двоичного файла смешанного режима, я только что опубликовал вчера на тему здесь.
Более или менее, если у вас есть двоичный файл смешанного режима, вы не должны запускать управляемый код, пока вы находитесь в DllMain().
Для прямого ответа на ваш вопрос эта страница цитирует стандарт, который гласит:
"Нет ограничений на то, какой код разрешен в инициализаторе модуля. Инициализаторы модулей разрешены для запуска и вызова как управляемого, так и неуправляемого кода".
Ответ 3
Если вы используете DLL в другом управляемом проекте (например, приложение aС#), вам не нужно ничего делать... Пока классы, к которым вы пытаетесь получить доступ, являются классами ref, вы можете доступ к ним из любого другого управляемого приложения.
Ответ 4
Одно из гигантских преимуществ DLL.Net заключается в том, что они избегают блокировки загрузчика. Один побочный эффект - отсутствие DllMain.