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

标签 c++ windows com instance dllmain

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

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

最佳答案

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

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

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

关于c++ - 在 dllmain()/DLL_PROCESS_ATTACH 中允许实例化 com 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24880312/

相关文章:

c++ - 是否可以 std::move 本地堆栈变量?

windows - 对 .bat 文件使用自定义 Tee 命令

multithreading - 在流程外环境中,公寓 “live”是位于服务器端还是位于客户端?

c++ - 在caffe中只编译一层文件

c++ - 我什么时候真的需要使用 atomic<bool> 而不是 bool?

windows - Unix 系统命令在 Windows 上最好最完整的实现是什么?

c++ - 未解析的外部符号 _CLSID_VdsLoader

com - 如何在命令行上从 COM exe 中提取 TypeLib

c++ - char[4] 到 QColor 转换

c# - Windows 服务和 Win 应用程序之间的通信