0

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

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

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

4

1 回答 1

0

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

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

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

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

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

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

于 2012-08-07T08:02:30.413 回答