Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Com互操作DLL的多个版本_C++_.net_Com Interop - Fatal编程技术网

C++ Com互操作DLL的多个版本

C++ Com互操作DLL的多个版本,c++,.net,com-interop,C++,.net,Com Interop,我有一个使用Com互操作构建的.NET2.0DLL,因此我可以从VS6中开发的两个不同的C++/MFC应用程序中访问它 目前,一个C++应用程序(APP1)使用.NETDLL(LIb1)的一种形式,而另一种(APP2)使用另一种形式(LIb2)。我希望将这些独立的库组合成一个代码库(它们应该是这样的),但我仍然需要它们是两个独立的库。但是,如果这两个库的名称相同,我不知道如何注册它们。这能做到吗?除了我目前正在做的事情,还有其他选择吗 App1通过调用访问其版本的库: hr=::CLSIDFro

我有一个使用Com互操作构建的.NET2.0DLL,因此我可以从VS6中开发的两个不同的C++/MFC应用程序中访问它

目前,一个C++应用程序(APP1)使用.NETDLL(LIb1)的一种形式,而另一种(APP2)使用另一种形式(LIb2)。我希望将这些独立的库组合成一个代码库(它们应该是这样的),但我仍然需要它们是两个独立的库。但是,如果这两个库的名称相同,我不知道如何注册它们。这能做到吗?除了我目前正在做的事情,还有其他选择吗

App1通过调用访问其版本的库:
hr=::CLSIDFromProgID(L“Lib1.Devices”、&clsid); App2通过调用来访问其版本的库:

hr=::CLSIDFromProgID(L“Lib2.Devices”、&clsid)

在这里你可以做两件事

  • 您可以为两种不同的形式放置两种不同的方法,这样您就可以拥有一个单一的COM对象,该对象公开两种可由两个不同应用程序使用的方法

  • 您可以做的第二件事是,为您的com dll放置两个不同的GUID,这样,您就可以拥有具有相同名称的dll以及两个不同的代码。但不建议这样做,这是dll地狱的根本原因

有关此解决方案,请参阅此处

使用类的[ProgId]属性更改名称。