在dllmain()/ DLL_PROCESS_ATTACH中允许实例化com对象?

时间:2014-07-22 06:27:26

标签: c++ windows com instance dllmain

DLLMAIN() / DLL_PROCESS_ATTACH中加载DLL可能会造成麻烦。但是可以使用e.q. COM Objects实例化{{1}}。 CoInitialize()/ CoCreateInstance()?

编辑:问题是: 可能会创建COM实例导致类似的错误,如在这种情况下加载DLL? 加载DLL,创建COM实例在某种程度上对我来说似乎相似。

1 个答案:

答案 0 :(得分:2)

我不确定你从哪里得到引用,但听起来不对。

你永远不应该将任何重要的代码放入DllMain。特别是调用LoadLibrary的代码。许多Windows API都会调用LoadLibrary,因此最好避免在此处进行任何复杂的初始化。使用全局C ++对象(对于它的构造函数)或者更好的是,导出一个函数进行初始化。

进程内组件的CoCreateInstance最终将调用LoadLibrary或其变体之一。在DllMain中调用此函数也不是明智之举。