2008-10-28 5 views
1

После обновления приложения на основе VB 6, представляющего COM-интерфейс, COM-клиенты (в .NET), созданные против предыдущей версии, получают ошибки E_NOINTERFACE.E_NOINTERFACE после обновления VB6

сообщение об ошибке (в переводе) Невозможно преобразовать COM-объект типа AProduct.AClass интерфейс типа AProduct._AClass ...

Что пошло не так?

В чем причина ошибки E_NOINTERFACE?

I подумал, что после того, как интерфейс был опубликован в COM, его нельзя изменить; a должен быть опубликован новый интерфейс (с уникальным UUID), который может наследовать старый, поэтому я решил, что интерфейс может быть обновлен (расширен) неправильно.

ответ

1

Что такое параметр совместимости версий в вашем проекте VB 6.0? (См. Вкладку «Компонент» ваших свойств проекта)

Если это не совместимость с двоичными файлами, тогда GUID для интерфейсов и событий, открытых вашим компонентом, возможно, были изменены при компиляции библиотеки DLL.

Проверьте эти ресурсы для получения дополнительной информации

How To Use Project and Binary Compatibility

Setting up a COM component project in Visual Basic 6.0

+0

Спасибо за Указав эти вне, , кажется, что это произошло на самом деле (VB6 приложение от внешнего поставщика). Есть ли возможность установить патч для Runtime Callable Wrapper, чтобы обойти измененные идентификаторы GUID? – 2008-11-07 13:24:41