Несколько версий библиотеки Com Interop

У меня есть библиотека .NET 2.0, которую я создаю с помощью Com Interop, чтобы я мог получить к ней доступ из двух разных приложений C ++ / MFC, разработанных в VS 6.

В настоящее время одно приложение C ++ (App1) использует одну форму .NET DLL (Lib1), а другое (App2) — другую форму (Lib2). Я хотел бы объединить эти отдельные библиотеки в одну кодовую базу (как и должно быть), но мне все еще нужно, чтобы они были двумя отдельными библиотеками. Однако я не знаю, как зарегистрировать эти две отдельные библиотеки, если они имеют одинаковые имена. Можно ли это сделать? Есть ли альтернатива тому, чем я сейчас занимаюсь?

App1 получает доступ к своей версии библиотеки, вызывая:
hr = :: CLSIDFromProgID (L «Lib1.Devices», &CLSID);
App2 получает доступ к своей версии библиотеки, вызывая:
hr = :: CLSIDFromProgID (L «Lib2.Devices», &CLSID);

0

Решение

Две вещи, которые вы можете сделать здесь

  • Вы можете поместить два разных метода для двух разных форм, чтобы у вас мог быть один COM-объект, который предоставляет два метода, которые могут использоваться двумя разными приложениями.

  • Второе, что вы можете сделать, это поставить два разных GUID для ваших комл. Таким образом, вы можете иметь dll с тем же именем и два разных кода. Это не рекомендуется, хотя и является коренной причиной ада DLL.

см. здесь для этого решения
GUID в DLL (.Net)

0

Другие решения

Других решений пока нет …