Не удалось сгенерировать объект фабрики - ошибка 80040154 - PullRequest
0 голосов
/ 25 марта 2011

Я унаследовал сопровождение сложного управляемого / неуправляемого проекта, и я надеюсь, что смогу задать этот вопрос кратко .....

У меня есть неуправляемый класс (C ++), к которому я пытаюсь получить доступчерез управляемый код (C #).Это достигается следующим образом:

  • Неуправляемый класс (Prop) скомпилирован в неуправляемую dll (PropUnmanaged.dll)
  • PropUnmanaged.dll зарегистрирован с regsvr32
    regsvr32 / s PropDLL
  • Классы и типы в PropDLL подвергаются воздействию управляемого кода с использованием tlbimp
    Это создает управляемую DLL (PropTypesManaged.dll)
    Эта dll не зарегистрирована ни в regasm, ни в gacutil
  • Управляемый класс (MClass), пытающийся получить доступ к Prop, реализован в проекте, в котором одна из его зависимостей - PropTypesManaged.dll
  • Проект, реализующий MClass, завершается неудачно с сообщением об ошибке
    ПолучениеФабрика класса COM для компонента с CLSID {1EAD9D36-495C-44B2-8559-A6570E1ECE34} не выполнена из-за следующей ошибки: 80040154

GUID 1EAD ... ссылается на GUID открытого управляемого типакласса Prop, сгенерированного tlbimp.Он находится в реестре

Веб-поиск по коду ошибки смутно свидетельствует о том, что что-то пошло не так с шагом regsvr32, но моя система сообщает, что этот шаг выполнен успешно OK

С чего начать отладку?

1 Ответ

0 голосов
/ 04 августа 2011

Если вы используете 64-разрядную версию Windows, обязательно измените Цель платформы вашего проекта C # на x86:

Откройте свойства проекта, выберите вкладку «Сборка», в разделе «Общие» выберите «x86» из выпадающего списка «Платформа».

...