2013-04-05 46 views
0

我們有2個DLL。這兩個DLL的基本相同。 一個DLL(DLL_A)位於運行網頁的一個目錄中。 另一個DLL(DLL_B)位於另一個目錄中,另一個網頁將調用它。這兩個網頁都是孤立的。從一個myWebA.htm到myWebB.htm沒有 聯繫人。
d:\ mywebA \ myWebA.htm
d:\ mywebA \ DLL_A.dll

vc dll自動註銷自己

d:\ myWebB \ myWebB.htm
d:\ myWebB \ DLL_B.DLL

的DLL_A是幾年前寫的。 最近我們創建了在myWebB中使用的DLL_B。 現在我們注意到這個問題。

如果用戶網頁調用DLL_A.dll,它會取消註冊DLL_B.dll。 反之亦然。

這兩個DLL都可以註冊。 被稱爲FIRST的DLL將取消註冊其他DLL。

我注意到的一件事,即運行着DLL的服務器(windows 2003)上將有相同的PID 。

如果我可以註冊這些與不同的PID將解決問題? 如果是這樣怎麼樣?

其他建議?

TIA Steve42

回答

1

首先,我認爲你是在談論COM DLL文件在這裏,沒有任何其他的。 在這種情況下,可能兩個DLL都具有相同的GUID。在這種情況下,它會產生問題,因爲一次只能註冊一個DLL,因爲GUID需要是唯一的機器範圍。

如果您安裝了Visual Studio,則有很多工具,如COM Viewer,它會告訴您拖放時兩個DLL的GUID。

+0

是的他們有相同的GUID。 **如何更改它?**在文件OAIDL.H中有MIDL_INTERFACE(「00020405-0000-0000-C000-000000000046」) – Steve42 2013-04-08 16:00:55

+0

@ Steve42 - 在這種情況下,您有兩種選擇:[1 ]獲取源代碼並重新編譯DLL_A或DLL_B(並且記住在重新編譯之前更改GUID)。 [2]另一種方法是取消註冊這兩個DLL,並將它們放在他們所需的Web應用程序目錄中。通過這種方式,兩個DLL對彼此都不會有任何可見性,並且它們將在同一臺機器上工作,儘管它們具有相同的GUID。 – 2013-04-08 16:17:15

+0

我想用此DLL中的編譯代碼進行更改。我試着在OAIDL.H中改變它。它不起作用。我嘗試在其他區域更改它,但它默認回到「00020405 ...」**我在哪裏更改GUID?** – Steve42 2013-04-08 17:26:29