Exe Crash При ADODB.Connection с "Класс не поддерживает автоматизацию"
Одна машина, имеющая MSVBVM60.dll ver 6.0.97.82, скажем, OLD. Другая машина, имеющая MSVBVM60.dll версии 6.0.98.15, скажем, НОВАЯ. Exe, созданный из новой машины, вылетает на линии new ADODB.Connection
на СТАРОЙ машине выдавая следующую ошибку
Ошибка времени выполнения '430': класс не поддерживает автоматизацию или не поддерживает ожидаемый интерфейс
Как от этого избавиться? Моя главная цель - запустить exe на старой машине, пока она создается на новой машине. Чтобы не мешать конфигурации новой машины, я попытался отменить регистрацию более старой версии и зарегистрировать более новую версию на старой машине, но безуспешно. Есть ли другие dll, используемые ADODB.Connection
или мне нужно сделать что-то совершенно другое, чтобы избавиться от этого?
3 ответа
Это не имеет ничего общего с версиями среды выполнения VB и больше с библиотеками ADO (как намекает строка ошибки) и было вызвано нарушением совместимости Microsoft в их библиотеках ADO.
Статья KB 2517589 объясняет, почему и решение, которое, по сути, перекомпилировать против совместимости typelib.
Принятый ответ не работал для меня. Следующие шаги сделали.
- Сервис -> Рекомендации
- Снимите:
- Библиотека объектов данных Microsoft ActiveX 6.1
- Библиотека Microsoft ActiveX Data Recordset 6.0
- Microsoft ADO Ext. 6.0 для DDL и безопасности
- Проверьте:
- Библиотека данных Microsoft ActiveX 2.8.
- Библиотека записей данных Microsoft ActiveX 2.8
- Microsoft ADO Ext. 2.8 для DDL и безопасности
"Класс не поддерживает автоматизацию". Эта ошибка генерируется при компиляции в vb 6.0 с использованием 64-битной версии Windows и попытке запустить ее на 32-битной версии Windows. Перекомпиляция с 32-битным исправила ошибку
Может быть проще всего пропатчить всю среду выполнения VB6 на старой машине - вы можете скачать ее здесь.
Среда выполнения VB6 распространяется в виде пакета, поэтому я не рекомендовал бы просто вставлять определенные библиотеки DLL самостоятельно.
Я также рекомендовал бы проверить, используют ли две машины, на которых вы работаете, одну и ту же версию MDAC, в частности, что на старой машине установлена версия, на которую ссылается ваш проект.