Класс не зарегистрирован .... при попытке вызвать управляемую библиотеку C # из неуправляемого C ++ - PullRequest
2 голосов
/ 09 сентября 2009

У меня есть библиотека C #, которую я использую для COM-объекта в неуправляемом коде C ++. Я зарегистрировал библиотеку с помощью флажка Visual Studio «Register For Com Interop» и установил для ComVisible значение true.

импортировал tlb в приложение C ++ ..... когда я запускаю его, я получаю "Class Not Registered" ....

Это работало и раньше, но это начало происходить после того, как я переместил каталог своего проекта C # в другое место .... да, я перерегистрировал библиотеку после того, как переместил ее.

Я удалил все ссылки из реестра ... Я даже пытался создать gacutil.exe / i для него ... без кубиков.

Кто-нибудь знает, как это исправить?

Ответы [ 2 ]

0 голосов
/ 09 сентября 2009

Лучшим способом использования неуправляемых объектов в управляемом коде является использование C ++ / CLI. Вы можете легко создать управляемую оболочку вокруг собственного объекта.

0 голосов
/ 09 сентября 2009

Если у вас не установлен явный CLSID для вашего управляемого объекта, возможно, что перемещение и перестройка сгенерировали новый CLSID. Убедитесь, что в вашем неуправляемом проекте нет устаревшей копии библиотеки типов.

Перейдите в HKCR \ CLSID \ {XXXX} и убедитесь, что регистрация класса для управляемого объекта указывает на правую управляемую dll.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...