有两个不同版本的DLL会导致问题吗?

时间:2012-08-06 14:39:20

标签: dll vb6

我有一个vb6程序,需要使用MSOLAP80.dll才能正确显示其数据透视表。但是因为MSOLAP90.dll与此有一些兼容性问题我无法使用MSOLAP90.dll并仍然显示数据透视表。

我已注册MSOLAP90.dll,然后再次注册MSOLAP80.dll,一切似乎都没问题。然而,我不知道两者是否实际已注册或MSOLAP80.dll是唯一注册的,因为我没有关于MSOLAP90.dll中的新内容的参考点。是否有可能两者都被注册,程序只是使用MSOLAP80.dll,如果有程序需要MSOLAP90.dll,那么它会知道使用那个吗?

我想我只是对如何注册DLL的工作感到困惑,以及是否可以同时注册这两个。有人可以帮忙解释一下吗?

1 个答案:

答案 0 :(得分:0)

如果您想确定注册了哪一个,您可以:

  • 查看References对话框,找到与您的DLL路径匹配的类型库。
  • 打开RegEdit,搜索MSOLAP80.DLL或MSOLAP90.DLL(取消选中“仅匹配整个字符串”)。

如果您找到两个DLL的引用,那么您是安全的,因为您可以绑定到特定版本。如果找到对错误DLL的引用,则取消注册错误的DLL,并注册正确的DLL。

COM originall一次只允许一组CLSID(唯一标识类),IID(唯一标识类的接口)的一个版本。可以对LIBID(标识类型库 - 嵌入在DLLL中的资源)有多个引用,但它们必须具有不同的版本。

从Windows XP开始,可以进行并行DLL访问,其中可执行文件可以访问特定版本的DLL,从而覆盖注册表中的值。您需要在与EXE文件相同的文件夹中嵌入或使用.manifest文件。

不幸的是,这个文档似乎已经从MSDN中消失了,只有几篇知识库文章提到了这些文档: