Вызов 32-битного COM из C #, работающего в 64-битном режиме

У меня есть сторонний COM-объект (32-разрядный), который мне нужно вызвать из моего приложения C # (64-разрядного). Я знаю, что мне нужно запустить COM-объект в отдельном процессе. В этом COM-объекте реализовано множество классов, поэтому я стараюсь избегать написания собственной оболочки удаленного взаимодействия, которая предоставляет все методы. COM + кажется наиболее простым решением. Я открыл меню «Службы компонентов», создал новое приложение COM +, добавил свой COM-объект в качестве компонента этого приложения. Казалось, все импортировано красиво.

В моем приложении C # я добавил исходный COM-объект в качестве ссылки (который автоматически генерирует библиотеку типов). Используя ссылку на библиотеку типов, я могу создавать объекты из компонента COM + (я вижу, что они начинают вращаться в окне Component Services), но когда я пытаюсь получить доступ к одному из методов объекта, я получаю сообщение об ошибке интерфейса не зарегистрирован.

Кто-нибудь знает? Я вернулся и запустил regsvr32 для COM-объекта, но я не думаю, что это было необходимо, и это не помогло. Правильно ли я использую C #? При автозаполнении VS2008 не было проблем с просмотром этих методов.

Точное исключение: «Интерфейс не зарегистрирован (исключение из HRESULT: 0x80040155)»

Неясно, какие именно разрешения и роли относятся к службам компонентов, я попытался настроить удостоверение объекта COM + для запуска под системной учетной записью, как локальная служба и как интерактивный пользователь. Я добавил всех в роли пользователя. Все работает локально, поэтому проблем с файловыми привилегиями или чем-то подобным быть не должно.

Я также хочу повторить, что этот COM-объект содержит много классов.Я успешно создал один объект класса в своем клиенте и установил некоторые значения свойств. Я также успешно создал экземпляр другого объекта класса, но получил это исключение при попытке вызвать метод этого второго объекта .... поэтому я не думаю , что существует проблема, с которой зарегистрирован мой COM-объект. дюйм

9
задан Community 28 July 2011 в 18:15
поделиться