MS office COM加载项功能和dll



我对MS平台上的开发非常陌生,因此在理解dll的概念以及应用程序如何使用dll方面存在一些问题。我在Java方面有着丰富的经验,为了更好地理解它们的功能,我会尝试对它们进行比较。

据我所知,dll是由c++/c#/mfc代码编译的。它几乎相当于Java中的.class(除了类文件可以反编译)。dll可以作为库导入到任何其他源文件中,类文件也可以。

现在我想知道的是,当我们使用这个dll时,是否只有一个dll实例将由使用它的多个应用程序实例共享,或者每个应用程序都有自己的dll实例。我认为是后者,因为它更有意义,因为MS开发完全是面向对象的。

这方面的一个主要示例可以是在任何office应用程序中运行COM加载项。我们可以用不同的工作簿打开excel应用程序的几个实例。每个工作簿都有自己的加载项实例(以dll文件的形式),还是只有一个实例在首次加载excel时启动,并与所有打开的工作簿共享,直到最后一个工作簿关闭。

如果它们不共享,有没有办法在时间之间共享一些方法(比如在Java中创建静态方法和变量)?

下面是对Windows DLL的全面解释。http://support.microsoft.com/kb/815065

关于实例,我相信是后者,正如您所建议的,即每个进程1个实例,在COM加载项的情况下,它将是每个正在运行的实例。

请参阅文章中的这一段。

当多个程序使用相同的函数库时,DLL可以减少加载在磁盘上和中的代码的重复物理内存。这会极大地影响not的性能只是在前台运行的程序,还有其他在Windows操作系统上运行的程序。

最新更新