【发布时间】:2020-05-15 20:18:44
【问题描述】:
我想在一个应用程序中的两个插件之间进行通信。 这两个插件都是 C++ COM DLL。我们称它们为 DLL1 和 DLL2。
在 DLL1 中,我创建了一个加载 COM DLL 的 COM 类的实例。 从 DLL2,我可以创建该 COM 类的类似实例,它可以再次加载该 COM DLL。
基本上,我不想再次从 DLL2 加载该 COM DLL 并以某种方式获取已由 DLL1 加载的该 COM DLL 的句柄。 我可以从 DLL2 调用 COM DLL(由 DLL1 加载)中存在的函数而不再次加载它吗?
这里的限制是,我不想从 DLL2 加载 COM DLL。它将由 DLL1 加载,我只想从 DLL2 执行该 COM DLL 函数。
【问题讨论】:
-
为什么Windows会在同一个进程中加载一个DLL两次?中间会被卸载吗?您是如何确定会发生这种情况的?如果可能的话,你能显示加载“那个 COM DLL”的代码吗?
-
如果是同一个进程,DLL就不会再加载了