Настройка DLL для COM-взаимодействия без регистрации с C # / Управляемый код

Я новичок в COM и должен создать оболочку COM для DLL C ++, чтобы сделать некоторые функции в нем доступными для управляемого кода. Я в основном следил этот учебник по проекту кода создать COM ATL DLL. Я создал шаг после сборки, который вызывает tlbimp.exe на COM-DLL для создания упаковки.

Добавление ссылки на dll, которую создает tlbimp.exe, работает, и я получаю завершение кода для методов на моей COM dll и могу скомпилировать управляемый код, использующий эту dll. Однако выполнение этого кода приводит к следующему исключению:

Unhandled Exception: System.Runtime.InteropServices.COMException: Retrieving the COM class factory
for component with CLSID {FD6F73D2-0208-455A-953A-C911EC2CAEAB} failed due to the following error:
80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
//...

Если я правильно понимаю это исключение и документацию по MSDN, следующим шагом будет настройка части «без регистрации» COM-взаимодействия без регистрации. Я посмотрел на различные руководства, такие как этот а также этот, но я все еще не понимаю, что я должен делать.

Итак, мой вопрос:

Какие основные шаги мне нужно предпринять, чтобы моя недавно созданная .Net-совместимая COM-библиотека загружалась без регистрации?

Должен ли я написать манифест для моего приложения .Net, которое использует COM DLL?
Должен ли я написать манифест для моей COM DLL? Или DLL, которую tblimp.exe генерирует из него?

2

Решение

Я считаю, что вы не видите Isolated свойство в обозревателе решений, поскольку вы вручную создали сборку Interop с помощью tlmbimp.exe, а затем добавили ее в проект.

Не делай этого. Удалите эту существующую ссылку, затем добавьте новую, где вы будете искать исходную неуправляемую COM DLL. В Справочном менеджере нажмите COM слева нажмите Browse нажмите кнопку, затем найдите и выберите неуправляемую COM DLL. Visual Studio сделает все остальное.

2

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

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

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector