использование .NET dll из vb6 выдает ошибку времени выполнения 430 Class не поддерживает автоматизацию - PullRequest
0 голосов
/ 23 января 2012

У меня есть приложение VB6, в которое я внес некоторые изменения. Это относится к DLL, созданной в .NET 2, которую я также изменил Когда я изменил dll, я собрал его и переписал dll в проекте VB.

Теперь, когда я запускаю VB6 exe, я получаю следующую ошибку:

Ошибка времени выполнения 430. Класс не поддерживает автоматизацию или не поддерживает ожидаемый интерфейс

Любая помощь в том, как я отлаживаю или справляюсь с этим, была бы большой благодарностью.

ОБНОВЛЕНИЕ: Я думаю, что здесь бомбят

Set  get_datalist = New ADODB.Recordset

Я думаю, что это может быть MDAC, так как я создал приложение на компьютере с Win 7 и пытаюсь запустить его на Windows XP.

РЕШЕНО: Я закончил сборку проекта на машине с XP, спасибо за помощь!

Ответы [ 2 ]

2 голосов
/ 23 января 2012

Чтобы увидеть, какие изменения были внесены в .Net dll, вы можете использовать OLE View для проверки библиотеки типов. Делай так:

  1. Открыть OLE View
  2. Перейти к File-> View Typelib .... Выберите старую версию файла .tlb из вашего объекта .Net.
  3. Сохранить файл IDL как текст
  4. Повторите 2 и 3 для новой версии файла .tlb
  5. Используйте инструмент сравнения файлов для сравнения двух файлов .idl.

Это покажет различия в именах интерфейсов, GUID и т. Д.

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

1 голос
/ 24 января 2012

Я думаю, что это может быть MDAC, так как я создал приложение на машине с Win 7

Нет сомнений в том, что обратите внимание на то, как он взрывается на ADODB.Recordset, и ничего не связано с вашим кодом .NET. Выпущено давно назревшее обновление для ADO в Windows 7 SP1. Это решает проблему с совместимостью библиотек типов для 64-битного кода. Однако это было критическое изменение и требовало новых руководств для типов интерфейса ADO.

Это то, о чем говорится в сообщении: ваша программа была создана для работы с обновленной версией ADO, на машине с XP все еще работает старая версия. Основная статья базы знаний находится здесь .

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