У меня есть библиотека VB6, доступ к которой осуществляется из некоторого кода C #.
Использование скомпилированной и зарегистрированной VB6 DLL не вызывает проблем. Но когда я загружаю источник VB6 в IDE VB6 и запускаю проект, следующий запуск кода C # завершится неудачно с ошибкой ниже.
Остановка работающей DLL в IDE VB6 снова позволит программе C # работать из скомпилированной DLL.
VB6 DLL скомпилирована с двоичной совместимостью.
Я получаю сообщение об ошибке в C #:
Произошло необработанное исключение типа 'System.InvalidCastException'
в appname.exe
Дополнительная информация:
Невозможно привести COM-объект типа 'dllname.classname Class ' к
тип интерфейса 'имя_llll. _classname '.
Эта операция завершилась неудачно, потому что вызов QueryInterface на COM
компонент для интерфейса с IID
Ошибка {D8AB6D65-F5E7-4B9C-A039-67DDC630E5F7} из-за следующего
ошибка:
Ошибка загрузки библиотеки типов / DLL. (Исключение из HRESULT: 0x80029C4A
(TYPE_E_CANTLOADLIBRARY
)).
В частности, эта ошибка возникает, когда код C # пытается получить доступ к любой части объекта взаимодействия, которая фактически исходит из базового COM-объекта. Но доступ к .NET Object
-обработанным вещам вроде .ToString()
отлично работает на этом объекте.
Почему я получаю эту ошибку?
* * +1032 Кроме того: * 1 033 *
Если я скомпилирую код C #, когда код VB6 НЕ запущен, он будет работать нормально. Но при компиляции, когда код VB6 работает, я получаю сообщение об ошибке:
BC30002 dllname.classname не определено.
Спасибо