2013-11-21 126 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操作系統上運行的其他 程序的性能。

相關問題