Windows vc dll自动注销自身

Windows vc dll自动注销自身,windows,Windows,我们有两个DLL。两个dll的功能基本相同。 一个DLL(DLL_A)位于一个目录中,供网页运行。 另一个DLL(DLL_B)位于另一个 网页会叫它。两个网页都是孤立的。没有 从一个myWebA.htm联系到myWebB.htm。 D:\mywebA\mywebA.htm D:\mywebA\DLL\u A.DLL D:\myWebB\myWebB.htm D:\myWebB\DLL\u B.DLL DLL_A是几年前编写的。 最近,我们创建了用于myWebB的DLL_B。 现在我们注意到了这

我们有两个DLL。两个dll的功能基本相同。 一个DLL(DLL_A)位于一个目录中,供网页运行。 另一个DLL(DLL_B)位于另一个 网页会叫它。两个网页都是孤立的。没有 从一个myWebA.htm联系到myWebB.htm。
D:\mywebA\mywebA.htm
D:\mywebA\DLL\u A.DLL

D:\myWebB\myWebB.htm
D:\myWebB\DLL\u B.DLL

DLL_A是几年前编写的。 最近,我们创建了用于myWebB的DLL_B。 现在我们注意到了这个问题

如果用户网页调用DLL_A.DLL,则会注销DLL_B.DLL。 反之亦然

两个DLL都可以注册。 首先被调用的DLL将注销另一个DLL

我注意到的一件事是,哪个DLL正在运行将具有相同的PID 在服务器上(windows 2003)

如果我可以注册一个不同的PID,这会解决问题吗? 如果是,怎么做

还有其他建议吗

短暂性脑缺血发作
Steve42

首先,我假设您在这里谈论的是COM DLL,而不是其他。 在这种情况下,您的两个DLL可能具有相同的GUID。在这种情况下,它将产生一个问题,因为一次只能注册一个DLL,因为GUI需要在计算机范围内是唯一的


如果已安装Visual Studio,则有许多工具(如COM Viewer)可在拖放时告诉您两个DLL的GUID。

是,它们具有相同的GUID。我如何改变它@Steve42-在这种情况下,您有两个选项:[1]获取源代码并重新编译DLL_A或DLL_B(记住在重新编译之前更改GUID)。[2] 另一种方法是注销这两个DLL,并将它们放在需要它们的web应用程序目录中。这样,两个DLL彼此之间就没有任何可见性,尽管它们具有相同的GUID,但它们将在同一台计算机上工作。我想在此DLL中使用编译代码进行更改。我试着在OAIDL.H中改变它。它不起作用。我曾尝试在其他区域更改它,但它默认为“00020405…”我在哪里更改GUID?您是否尝试了第二种方法?这更容易。要注销dll,只需运行“regsvr32 C:\MY\u PATH.dll-u”。查找并注销DLL_A和DLL_B的所有现有副本。然后在运行web应用程序之前,确保所需的DLL存在于同一路径中。我尝试了第二种方法。它不起作用。网页必须创建一个对象。因此,当DLL被注销时,我得到了一个错误。在更改DLL的GUID时,我需要做什么?