Проблема ссылки на ком сборки DLL - PullRequest
2 голосов
/ 04 октября 2010

У меня проблема.Когда я импортирую COM DLL (VB6) в моем приложении C #, все в порядке.Он компилируется и работает.

Однако, когда я использую приложение на другом ПК, у меня появляется сообщение об ошибке:

Невозможно привести объект к установке типа COM. Установка VB6FenetreClass._VB6Fenetre тип интерфейса.Эта операция завершилась неудачно, поскольку вызов QueryInterface для компонента COM для интерфейса с IID {4CD38B1B-45F1-4DC5-910E-3579664306B9} 'не выполнен из-за следующей ошибки: этот интерфейс не поддерживается (BingTranslated)

Но я не понимаю, почему.

Ответы [ 3 ]

2 голосов
/ 04 октября 2010

Это довольно классический признак DLL Ада.VB6 генерирует новые идентификаторы интерфейса при изменении кода.Вероятность того, что COM-сервер на целевом ПК отличается от версии, для которой вы создали свою программу.

2 голосов
/ 04 октября 2010

Добро пожаловать в DLL ад. Версия, зарегистрированная на компьютере, на котором вы тестируете, отличается от версии на компьютере, на котором вы разрабатываете (или имеет другой GUID).

0 голосов
/ 06 октября 2010

Наконец я нашел проблему. Ганс и Чак, вы правы, проблема в том, что на мою библиотеку VB6 не ссылались.

Когда я компилирую свою библиотеку VB6, Visual Basic 6.0 автоматически регистрирует мою библиотеку DLL в базе данных реестра (то, чего я раньше не замечал).

И в Visual Studio 2005 я не видел ссылки на мою библиотеку VB6, потому что когда я ссылаюсь на нее, VS генерирует другую DLL (если имя моей dll - MYDLL, VS генерирует Interop.MYDLL. DLL).

Поэтому я подумал, что на Interop.MYDLL.dll есть только ссылка, но не ссылка на MYDLL.dll.

Следовательно, мы должны скопировать VB6 DLL, .NET DLL на клиентский компьютер. Затем мы должны зарегистрировать VB6 DLL с помощью следующей команды:

regsvr32 MYDLL.DLL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...