1

DLLMAIN() /中加载 DLLDLL_PROCESS_ATTACH可能会导致问题。但是可以COM Objects使用 eq CoInitialize() / CoCreateInstance() 实例化?

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

4

1 回答 1

2

我不确定你从哪里得到这句话,但听起来不对。

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

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

于 2014-07-22T06:58:01.707 回答