допускается создание объекта com в dllmain () / DLL_PROCESS_ATTACH?

Загрузка DLL в в DLLMAIN() / DLL_PROCESS_ATTACH может вызвать проблемы. Но может COM Objects быть экземпляром с использованием e.q. CoInitialize () / CoCreateInstance ()?

РЕДАКТИРОВАТЬ: Вопрос в том:
Может ли создание экземпляров COM вызвать такие же ошибки, как загрузка DLL в этих условиях?
Загрузка DLL и создание экземпляров COM кажутся мне в некотором роде похожими.

1

Решение

Я не уверен, откуда вы взяли эту цитату, но она звучит неправильно.

Вы никогда не должны помещать какой-либо код какой-либо значимости в DllMain. Особенно код, который вызывает LoadLibrary. Многие Windows API-интерфейсы будут вызывать LoadLibrary изнутри, поэтому лучше избегать любой сложной инициализации здесь. Используйте глобальный объект C ++ (для его конструктора) или, что еще лучше, экспортируйте функцию для инициализации.

CoCreateInstance для внутрипроцессных компонентов в конечном итоге вызовет LoadLibrary или один из его вариантов. Также было бы неразумно вызывать эту функцию в DllMain.

2

Другие решения


По вопросам рекламы [email protected]