2013-11-21 101 views
0

我对MS平台上的开发很陌生,因此我在理解dll的概念以及应用程序如何使用它们时遇到了一些问题。我对Java有着相当丰富的经验,并会尝试对它们进行比较,以便更深入地了解这些功能。MS Office COM加载项功能和DLL

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

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

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

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

回答

0

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

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

请参阅这篇文章。

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

相关问题