Если я скомпилирую приложение VB6 на win7, ошибки ADODB.Connection с "Class не поддерживают автоматизацию или не поддерживают ожидаемый интерфейс",
![Class does not support Automation or does not support expected interface]()
Я скомпилировал некоторый код VB6 на моей машине Win7 x64, и результат .exe не будет работать корректно на любой другой машине.
Код VB6 - это просто новый .exe файл с одним нажатием кнопки, ссылка на "Microsoft ActiveX Data Objects 2.6 Library" и следующий код в событии нажатия кнопки:
Dim db
Set db = New ADODB.Connection
Он работает корректно на моей машине, но нет других (даже других машин Win7 x64) (Обновление: я нашел ДВЕ других пользователей, где он работает, и один из них - Jeff Atwood!, но большинство машин имеют ту же проблему)
Я проверил экран ссылок на обеих машинах, чтобы узнать, не сработала ли ссылка (тогда она не будет компилироваться, хотя и компилируется отлично). Все выглядит законно. На 64-битных машинах ссылки переходят в SysWow64 вместо system32.
Я даже скомпилировал это успешно на 64-битной машине Vista и работал правильно. Это только компиляция на Windows 7, а затем запуск на любой другой машине, где происходит ошибка.
Ниже приведены результаты запуска CompChecker в моем поле:
![comp checker results on box]()
Информация о реестре: ADODB.Connection имеет GUID HKEY_CLASSES_ROOT\CLSID {00000514-0000-0010-8000-00AA006D2EA4}
InprocServer32 - это% CommonProgramFiles%\System\ado\msado15.dll
Ответы
Ответ 1
Это проблема с Windows 7 SP1. См. http://support.microsoft.com/kb/2517589 для обходных путей.
Есть и другие способы:
Кроме того, еще одна вещь, msado15.dll не поддерживается на x64 Win 7, как указано здесь: http://support.microsoft.com/kb/983246. Это большая страница, просто найдите msado15.dll.
Ответ 2
Ознакомьтесь с версией компонентов MDAC на обеих машинах, используя этот инструмент
Также убедитесь, что вы используете ту же базу данных SQL Server (гадание), поскольку я заметил, что SQL Server 2008 x64 работает по-разному, чем предыдущие версии, обрабатывающие соединения (при использовании VB6)