У меня есть библиотека .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);
Две вещи, которые вы можете сделать здесь
Вы можете поместить два разных метода для двух разных форм, чтобы у вас мог быть один COM-объект, который предоставляет два метода, которые могут использоваться двумя разными приложениями.
Второе, что вы можете сделать, это поставить два разных GUID для ваших комл. Таким образом, вы можете иметь dll с тем же именем и два разных кода. Это не рекомендуется, хотя и является коренной причиной ада DLL.
см. здесь для этого решения
GUID в DLL (.Net)
Других решений пока нет …