MS office COM加载项功能和DLL

时间:2013-11-21 21:07:06

标签: dll com office-interop

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

根据我的理解,dll是符合c ++ / c#/ mfc代码的。它几乎等同于Java中的.class(除了类文件可以反编译)。 dll可以作为库导入到任何其他源文件中,因此可以将类文件导入。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

关于实例,我认为后者就像你建议的那样,每个进程有1个实例,在COM加载项的情况下,每个实例都是运行实例。

请参阅文章中的这一段。

  

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