Здравствуйте Я создал COM видимого класса MyClass на C# зарегистрированного по команде Regasm - регистрация прошла OK И я могу видеть в реестре Progid, соответствующий MyClass В коде клиента C++: 1) вызов CLSIDFromProgID прошел OK 2) вызов CoCreateInstance с ошибкой «Класс не зарегистрирован» (80040154) Каковы могут быть возможные причины такого поведения - ваша помощь будет очень ценной Спасибо advanceCoCreateInstance неудачно с ошибкой «Класс не зарегистрирован» при использовании COM видена класс .NET
ответ
У меня была такая же проблема, решена выполнение этих команд с консоли:
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\regasm dllname.dll /tlb:dllname.tlb
C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\regasm dllname.dll /regfile
затем сделайте двойной щелчок по файлу reg.
, чтобы проверить, все ли в порядке, вы можете иметь очень маленький файл VB Script, который создал объект, просто поместите команду, как это в .vbs файл:
SET testObj = CreateObject ("пространство имен. ClassName ")
Ваш COM видимый сборник должен быть сильно прост.
Я просто хочу добавить, что проблема «класс не зарегистрирована» может произойти из-за того, что используется некорректная версия regasm. В состав платформы .NET входят 2 версии regasm.exe. Одна версия в пути «Framework», а другая в пути «Framework64».
На моей 64-битной машине я получил ошибку при использовании 32-разрядной regasm для регистрации DLL и попытался получить экземпляр из 64-разрядного C++ exe.
- 1. COM Interop ошибка, класс не зарегистрирован при использовании MSMQ библиотеки
- 2. Ошибка COM: класс не зарегистрирован (я уверен, что это так)
- 3. отказ Qt ActiveX CoCreateInstance (класс не зарегистрирован) Adobe Reader
- 4. Класс не зарегистрирован
- 5. Redemption Класс не зарегистрирован
- 6. COM (80040154 Класс не зарегистрирован) с использованием HTMLTextAreaElement в VB.Net
- 7. Класс не зарегистрирован Ошибка
- 8. COM Исключение: «Класс не зарегистрирован» при попытке создать ADOX.Catalog
- 9. "класс не зарегистрирован", какой класс?
- 10. EOleSysError с сообщением 'Класс не зарегистрирован'
- 11. Класс не зарегистрирован. Исключение
- 12. Класс Не зарегистрирован Исключение
- 13. WinRTError: Класс не зарегистрирован
- 14. Не удалось получить завод COM-класса; класс не зарегистрирован
- 15. CComPtr CoCreateInstance возвращает 0x80070582 (класс уже существует.)
- 16. CoCreateInstance C++/CLI класс от Native C++
- 17. класс не зарегистрирован
- 18. ACCESS Класс не зарегистрирован
- 19. Класс не зарегистрирован - AxMicrosoft.Office.Interop.OutlookViewCtl.AxViewCtl
- 20. System.Runtime.InteropServices.COMException: класс не зарегистрирован
- 21. COMException (0x80040154): Класс не зарегистрирован при использовании AxAcroPDFLib
- 22. DirectShow ошибка фильтра «Класс не зарегистрирован»
- 23. Класс не зарегистрирован (0x80040154) на моем собственном компоненте COM
- 24. Является COMException 0x80040154 всегда «Класс не зарегистрирован»?
- 25. Ошибка Word interop: 80040154 Класс не зарегистрирован
- 26. Ошибка восстановления класса COM-класса - класс не зарегистрирован
- 27. Применения навесило во время CoCreateInstance при использовании изолированного COM
- 28. «Класс не зарегистрирован» Ошибка при отладке приложения
- 29. Как добавить класс динамически при использовании .NET.
- 30. VB6 DLL, импортированный в проекте # .net C - Класс не зарегистрирован
Спасибо, что работает - в случае, если вы не используете сильное имя - вы также можете использовать/codebase flag –