Exe Crash В ADODB.Соединение с "Класс не поддерживает автоматизацию"

Одна машина с MSVBVM60.dll ver 6.0.97.82, скажем OLD. Другая машина, имеющая MSVBVM60.dll ver 6.0.98.15, скажем, NEW. Exe, созданный из новых сбоев машины в строке new ADODB.Connection на OLD-машине, дающей следующую ошибку

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

Как избавиться от этого? Моя главная задача - запустить exe на OLD-машине, создав новую машину. Чтобы не беспокоить конфигурацию новой машины, я попытался отменить регистрацию более старой версии и зарегистрировать новую версию на OLD-машине, но не успел. Существуют ли другие dll (s), используемые ADODB.Connection, или мне нужно сделать что-то совершенно другое, чтобы избавиться от этого?

Ответ 1

Это не связано с версиями среды исполнения VB и больше связано с библиотеками ADO (как ссылается на строку ошибок) и вызвано тем, что Microsoft нарушает совместимость в своих библиотеках ADO.

KB статья 2517589 объясняет, почему и решение, которое по существу перекомпилируется с совместимостью typelib.

Ответ 2

Лучше всего исправить всю среду исполнения VB6 на OLD-машине - вы можете загрузить с здесь.

Время выполнения VB6 распространяется как пакет, поэтому я бы не рекомендовал просто вставлять определенные DLL самостоятельно.

Я также рекомендую проверить, что обе машины, на которых вы работаете, используют одну и ту же версию MDAC, в частности, что OLD-машина имеет установленную версию, на которую ссылаются в вашем проекте.

Ответ 3

Принятый ответ не помог мне. Выполнены следующие шаги.

  • Инструменты → Ссылки
  • Снимите флажок:
    • Объекты данных Microsoft ActiveX 6.1 Библиотека
    • Библиотека записей Microsoft ActiveX 6.0.
    • Microsoft ADO Ext. 6.0 для DDL и безопасности
  • Проверьте:
    • Объекты данных Microsoft ActiveX 2.8 Библиотека
    • Microsoft DataX Data Recordset 2.8 Library
    • Microsoft ADO Ext. 2.8 для DDL и безопасности