none
Не удалось получить фабрику класса COM для компонента с CLSID ... HRESULT: 0x80040154 REGDB_E_CLASSNOTREG RRS feed

  • Вопрос

  • Всем добрый вечер.
    Мой рабочий проект создан в Microsoft Visual Studio Professional 2013
    Version 12.0 REL, используется фреймворк Microsoft .NET Framework Version 4.5.5
    Проект запускается на 64-битной корпоративной Windows 8.1
    И это ключевой момент.
    В состав проекта включена dll "ActiveX Formula One 6.1" стороннего производителя, являющаяся 32-битным приложением.   
    Аккуратно регистрирую все dll, входящие в состав "ActiveX Formula One 6.1", создаю файл .def и командой lib генерирую библиотеку .tlb.
    После этого регистрирую dll "ActiveX Formula One 6.1" в своем проекте:
    MyProject->Add->Reference->Browse-Program Files (x86)->Tidestone-> "ActiveX Formula One 6.1"
    Создаются две обвертки:
    Interop.TTF160.dll
    Interop.StdType.dll
    Библиотеки доступны и работают, начиная с инструкции
    using TTF160
    все свойства и методы при кодировании доступны, то есть студия "видит" эту библиотеку.
    Запускаю проект на выполнение и при выполнении первого обращения
    TTF160.F1Book oF1Book = new TTF160.F1BookClass();
    выдается сообщение:
    Не удалось получить фабрику класса COM для компонента с CLSID ... HRESULT: 0x80040154 REGDB_E_CLASSNOTREG

    На машине разработчика для всех Application Poll, имеющихся в работе, установлено
    Диспетчер служб IIS->Пулы приложений->DefaultAppPoll->Дополнительные параметры->
    Разрешены 32-разрядные приложения: True

    Прошу подсказать, в чем ошибка и как запустить 32-битную dll "ActiveX Formula One 6.1" в 64-битном процессе.

    Среда разработки
    Microsoft Visual Studio Professional 2013
    Version 12.0.21005.1 REL
    Microsoft .NET Framework
    Version 4.5.53349

    Машина разработчика
    MS Windows 8.1 Корпоративная версия
    тип системы x64
    64-разрядная операционная система
    3 июля 2015 г. 14:01

Ответы


  • Прошу подсказать, в чем ошибка и как запустить 32-битную dll "ActiveX Formula One 6.1" в 64-битном процессе.

    Никак, это запрещено. Выбирайте для проекта .net архитектуру x86 явным образом, тогда шанс есть.

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

    • Помечено в качестве ответа SERGODDD 5 июля 2015 г. 8:20
  • Добрый день.

    На самом деле MS Visual Studio является 32-битным приложением. Таким образом мой рабочий проект является нормальным 32-битным процессом и включение в такой x86 проект стандартных x86 ActiveX объектов есть нормальный процесс. После переустановки Windows 8.1 и установки на чистую машину MS Visual Studio все ссылки в секции Reference нормально заработали. Благодарю за поддержку. Видимо, надо почаще "сносить" ОС. От себя замечу, что использование Windows 8.1 в качестве профессиональной копоративной системы кажется ненадежным. Упомянутые в посте ошибки "полезли" после очередного обновления.

    Наверное, как минимум необходимо отключить сценарий автоматического обновления.

    Всем успехов.

    • Помечено в качестве ответа SERGODDD 10 июля 2015 г. 10:41
    10 июля 2015 г. 10:41

Все ответы


  • Прошу подсказать, в чем ошибка и как запустить 32-битную dll "ActiveX Formula One 6.1" в 64-битном процессе.

    Никак, это запрещено. Выбирайте для проекта .net архитектуру x86 явным образом, тогда шанс есть.

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

    • Помечено в качестве ответа SERGODDD 5 июля 2015 г. 8:20
  • ок. принято в работу.
  • Добрый день.

    На самом деле MS Visual Studio является 32-битным приложением. Таким образом мой рабочий проект является нормальным 32-битным процессом и включение в такой x86 проект стандартных x86 ActiveX объектов есть нормальный процесс. После переустановки Windows 8.1 и установки на чистую машину MS Visual Studio все ссылки в секции Reference нормально заработали. Благодарю за поддержку. Видимо, надо почаще "сносить" ОС. От себя замечу, что использование Windows 8.1 в качестве профессиональной копоративной системы кажется ненадежным. Упомянутые в посте ошибки "полезли" после очередного обновления.

    Наверное, как минимум необходимо отключить сценарий автоматического обновления.

    Всем успехов.

    • Помечено в качестве ответа SERGODDD 10 июля 2015 г. 10:41
    10 июля 2015 г. 10:41
  • На самом деле MS Visual Studio является 32-битным приложением. Таким образом мой рабочий проект является нормальным 32-битным процессом.

    Ну, это Вы, пожалуй, погорячились :) VS, действительно, 32-разрядный процесс, но результат компиляции приложения .net - общий промежуточный код, который компилируется в машинный при запуске программы в соответствии с архитектурой компьютера. "Any CPU" в архитектуре проекта именно это и означает. Если архитектура задана явно, то программа будет "жестко" или 32- или 64-разрядной не зависимо от архитектуры компьютера.

    Что же касается обновлений, то их производитель ПО выпускает не из вредности, а вовсе наоборот :) Хотите иметь меньше ошибок в работе системы - устанавливайте ВСЕ обновления.


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

    14 июля 2015 г. 11:59