Загрузка DLL в в DLLMAIN()
/ DLL_PROCESS_ATTACH
может вызвать проблемы. Но может COM Objects
быть экземпляром с использованием e.q. CoInitialize () / CoCreateInstance ()?
РЕДАКТИРОВАТЬ: Вопрос в том:
Может ли создание экземпляров COM вызвать такие же ошибки, как загрузка DLL в этих условиях?
Загрузка DLL и создание экземпляров COM кажутся мне в некотором роде похожими.
Я не уверен, откуда вы взяли эту цитату, но она звучит неправильно.
Вы никогда не должны помещать какой-либо код какой-либо значимости в DllMain. Особенно код, который вызывает LoadLibrary. Многие Windows API-интерфейсы будут вызывать LoadLibrary изнутри, поэтому лучше избегать любой сложной инициализации здесь. Используйте глобальный объект C ++ (для его конструктора) или, что еще лучше, экспортируйте функцию для инициализации.
CoCreateInstance для внутрипроцессных компонентов в конечном итоге вызовет LoadLibrary или один из его вариантов. Также было бы неразумно вызывать эту функцию в DllMain.