一个Com互操作DLL的多个版本

Multiple versions of a Com Interop DLL

本文关键字:版本 DLL Com 互操作 一个      更新时间:2023-10-16

我有一个使用Com互操作构建的。net 2.0 DLL,因此我可以从vs6中开发的两个不同的c++/MFC应用程序访问它。

目前,一个c++应用程序(App1)使用一种形式的。net DLL (Lib1),另一个(App2)使用另一种形式(Lib2)。我想把这些独立的库组合成一个代码库(它们应该是),但我仍然需要它们是两个独立的库。然而,我不知道如何注册这两个独立的库,如果他们有相同的名称。这能做到吗?我现在正在做的事情还有别的选择吗?

App1通过调用
来访问它的库版本:hr =::CLSIDFromProgID(L"Lib1. h ")设备",和clsid);App2通过调用:
来访问其版本的库:hr =::CLSIDFromProgID(L"Lib2. h . r ")设备",和clsid);

这里你可以做两件事

  • 你可以为两个不同的表单设置两个不同的方法,这样你就可以有一个COM对象,它暴露了两个方法,可以被两个不同的应用程序使用

  • 你可以做的第二件事是,为你的com dll设置两个不同的GUID,这样,你可以有相同名称的dll,但两个不同的代码。虽然不建议这样做,但它是dll地狱的根本原因。

此解决方案请参阅此处的

dll (.Net)中的guid