0040154 класс не зарегистрирован (исключение из HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG))
У меня есть idl-файл в моем проекте c++, и я хочу создать экземпляр для coclass из этого idl-файла в моем втором проекте, который я создал в c#.
при создании этого экземпляра в проекте c# я получаю исключение во время выполнения.
Я ищу решение для исключения и в основном получаю, что я должен установить платформу сборки на 32 бит.
Что я уже пробовал:
Цитата:Я попробовал это сделать и скомпилировал оба своих проекта в 32-битном формате, но все равно получил одно и то же исключение. Кроме того, когда я компилирую оба проекта на 64-битной платформе, все равно получаю одно и то же исключение.
Кроме того, я зарегистрировал свою библиотеку dll c++ с помощью regsrv32, и ее запись добавлена в реестр под 64-битной версией.
Я создал отдельный проект ATL на языке C++ и попытался создать экземпляр кокласса на языке c#. Эта работа для меня работает как в 32-битной, так и в 64-битной версии. Для проекта ATL я не запускал никакой команды для регистрации dll, я думаю, что visual studio сделала это за меня. Но для моего существующего проекта non ATL я не могу создать экземпляр com-класса c++ в c#.
Richard Deeming
Если библиотека dll C++ является 64-разрядной и зарегистрирована в 64-разрядном реестре, то приложение C# также должно быть настроено на 64-разрядную версию.