Могу ли я использовать 32-битный драйвер ODBC для моего 64-битного приложения - PullRequest
3 голосов
/ 12 апреля 2011

У меня есть приложение Win32, которое делает ODBC-соединения.Мы подключаемся, используя SQLDriverConnect(), который отображает диалоговое окно для выбора источника данных.В x64-версии диалоговое окно отображает и предлагает 2 разных 32-разрядных драйвера MS ACCESS.Когда я выбираю один из них, в 32-битной версии я вижу диалог открытия файла для выбора файла .mdb.В 64-битной версии вызов SQLDriverConnect () в этот момент возвращается с -1.

SQLError() возвращает: «[Microsoft] [Диспетчер драйверов ODBC] Не найдено имя источника данных и не указан драйвер по умолчанию»

Можно ли вообще использовать 32-битный драйвер ODBC64-битный исполняемый файл?Почему эти драйвера показаны?Насколько я могу найти, пока нет 64-битного драйвера MS Access OBDC.Что я могу сделать?

Ответы [ 4 ]

4 голосов
/ 12 апреля 2011

Вы абсолютно не можете смешивать 32-битное приложение и 64-битный драйвер (или наоборот).

По сути, драйвер ODBC - это, как правило, dll (windows) или общий объект (linux ...), который загружается его родительским приложением.

Все исполняемые файлы, библиотеки DLL и т. Д., Которые совместно используют одно и то же пространство процессов, должны иметь одинаковую разрядность ...

2 голосов
/ 12 апреля 2011

Чтобы "соединить" 64-битное приложение с 32-битным драйвером ODBC, вам нужно использовать мост ODBC-ODBC, например: -

http://uda.openlinksw.com/odbc-odbc-mt/

Это 64-битноеКлиентский компонент ODBC, который соединяет VIS сокеты с 32-битными серверными компонентами.Компоненты сервера соединяются с предварительно сконфигурированным 32-битным ODBC DSN доступа.

Клиентский компонент может находиться либо на локальном компьютере, либо на сервере ...

0 голосов
/ 03 февраля 2018

Вы не можете, но у вас есть альтернатива, чтобы скомпилировать ваше приложение в 32 бита и использовать 32-битный драйвер odbc. В моем случае я использую GoLang, просто измените переменную окружения GOARCH SET GOARCH = 386 , затем скомпилируйте ваш проект go build и ваш весь набор.

0 голосов
/ 12 апреля 2011

Ну, я не знаю, почему SQLDriverConnect() работает так, как вы это описываете, но, возможно, это сообщение в блоге от Microsoft

http://blogs.msdn.com/b/psssql/archive/2010/01/21/how-to-get-a-x64-version-of-jet.aspx

может вам немного помочь.

Кажется, что в ближайшем будущем не будет собственного 64-битного драйвера ODBC для MS Access, но упомянутые компоненты ACE могут быть альтернативой.

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