1

我们有一个 VB6.0 ActiveX.exe,它从同一进程的 2 个不同实例获取数据,即我的 activex.exe 在它自己的内存中运行,它能够从其父进程获取数据。

当 ActiveX.exe 迁移到 VS 2008 时,ActiveX.exe 失去了在自己的进程中运行的能力。结果,它在父进程的实例中成为本地的。

他们有什么方法可以使用多个父进程可以使用的单个 dll 吗?

4

1 回答 1

0

如果 DLL 由多个进程加载,Windows 加载程序将自动使用 DLL 的一个内存物理副本。您无需执行任何操作即可启用此行为。

如果要跨进程共享数据,则需要使用正常的进程间通信机制,例如可以正确保护的管道、套接字、文件、共享内存段等。

(以前,程序在其 PE 文件中创建共享的可写内存段并尝试以这种方式共享数据是很常见的;但这允许任何可以加载 DLL 的用户(在功能上是所有这些用户)与数据只是通过加载有问题的 DLL ......)

于 2015-04-13T06:52:59.330 回答