Winapi 我可以为我的64位应用程序使用32位ODBC驱动程序吗

Winapi 我可以为我的64位应用程序使用32位ODBC驱动程序吗,winapi,odbc,32bit-64bit,Winapi,Odbc,32bit 64bit,我有一个Win32应用程序,可以进行ODBC连接。我们使用SQLDriverConnect() 其中显示了一个用于选择数据源的对话框。在x64版本中,该对话框显示并提供2个不同的32位MS访问驱动程序。当我选择其中一个时,在32位版本中,我会看到一个打开的文件对话框来选择一个.mdb文件。在64位版本中,此时对SQLDriverConnect()的调用返回-1 SQLError()返回:“[Microsoft][ODBC驱动程序管理器]未找到数据源名称,且未指定默认驱动程序” 通常是否可以从64

我有一个Win32应用程序,可以进行ODBC连接。我们使用
SQLDriverConnect()
其中显示了一个用于选择数据源的对话框。在x64版本中,该对话框显示并提供2个不同的32位MS访问驱动程序。当我选择其中一个时,在32位版本中,我会看到一个打开的文件对话框来选择一个.mdb文件。在64位版本中,此时对SQLDriverConnect()的调用返回-1

SQLError()
返回:“[Microsoft][ODBC驱动程序管理器]未找到数据源名称,且未指定默认驱动程序”


通常是否可以从64位可执行文件使用32位ODBC驱动程序?为什么显示这些驱动程序?据我所知,目前还没有64位MS Access OBDC驱动程序。我能做什么呢?

嗯,我不知道为什么
SQLDriverConnect()
会像你描述的那样工作,但也许这篇来自微软的博文

我能帮你一点忙


似乎在不久的将来MS Access将不会有本机64位ODBC驱动程序,但提到的ACE组件可能会有一个替代方案。

您绝对不能混合使用32位应用程序和64位驱动程序(反之亦然)

基本上,ODBC驱动程序通常是由其父应用程序加载的dll(windows)或共享对象(linux…)

共享相同进程空间的所有可执行文件、DLL等必须具有相同的位号…

为了将64位应用程序“桥接”到32位ODBC驱动程序,您需要使用ODBC到ODBC桥接器,如-

它有一个64位ODBC客户端组件,用于将vis套接字连接到32位服务器组件。服务器组件桥接到预配置的32位访问ODBC DSN


客户端组件可以在本地计算机或服务器计算机上…

您不能,但您可以选择以32位编译应用程序,并使用32位odbc驱动程序。在我的例子中,我使用GoLang只需更改GOARCH环境变量设置GOARCH=386,然后编译您的项目go build和您的所有设置。

感谢您给出了清晰的答案。我非常确定ODBC是否使用COM或其他接口。但是,当我从64位应用程序调用ODBC驱动程序管理器时,为什么ODBC驱动程序管理器会列出这些驱动程序?@REDSOFTADAIR它与注册表项有关。Microsoft的描述如下:64位Office或MS Access 2010安装程序确实包含64位MS Access ODBC驱动程序,尽管它似乎不是64位Windows操作系统附带的64位MDAC的一部分,但我认为在以后的更新中可能会有所改变。就在上周,我安装了64位MS Access,这使我能够在Windows上将MS Access表链接到我的64位。@Hwillams:谢谢你提供的有趣信息,我发现的博客文章似乎有点过时。没有回答问题:“我可以为我的64位应用程序使用32位ODBC驱动程序吗?”。