2013-04-05 88 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