Visual studio 2012 通过ODBC DSN将Visual Studio连接到Virtuoso 7.1时出现架构不匹配异常

Visual studio 2012 通过ODBC DSN将Visual Studio连接到Virtuoso 7.1时出现架构不匹配异常,visual-studio-2012,odbc,virtuoso,Visual Studio 2012,Odbc,Virtuoso,我知道类似的问题以前也被回答过,但我似乎无法澄清我的具体问题。 当Db驱动程序和VS项目具有不同的平台目标(32、64位)时,将提示架构不匹配异常。到目前为止还不错 我尝试的第一件事: 我将整个解决方案的平台目标更改为32位,之后更改为64位。 ->在这两种情况下都有相同的错误(我不确定VS在什么情况下认为一个项目是一个特定的体系结构。也许有人可以详细说明这一点…) 现在,我将重点放在Virtuoso 7.1的驱动程序和DSN上。 按照安装开源版本Virtuoso()的说明,我使用“regsvr

我知道类似的问题以前也被回答过,但我似乎无法澄清我的具体问题。 当Db驱动程序和VS项目具有不同的平台目标(32、64位)时,将提示架构不匹配异常。到目前为止还不错

我尝试的第一件事: 我将整个解决方案的平台目标更改为32位,之后更改为64位。 ->在这两种情况下都有相同的错误(我不确定VS在什么情况下认为一个项目是一个特定的体系结构。也许有人可以详细说明这一点…)

现在,我将重点放在Virtuoso 7.1的驱动程序和DSN上。 按照安装开源版本Virtuoso()的说明,我使用“regsvr32 virtodbc.dll”在/lib中注册了驱动程序。这立即将其添加为32位驱动程序(在使用system32/odbcad32.exe时可见)。在DSN中使用此驱动程序会导致架构不匹配

我尝试使用64位版本的regsvr32将同一dll注册为64位驱动程序,但没有成功。由于我不能添加合适的64位DSN,我将满足于使用32位目标cpu。如上所述,virtodbc.dll的32位版本在VS中的任何目标平台配置下都会导致架构不匹配

我甚至安装了客户端连接工具包(),声称只提供64位驱动程序。只是发现自动安装的驱动程序和DSN也具有32位驱动程序的特性(意思是:它们仅在使用32位版本的odbcad32.exe而不是64位版本时可见)


我不确定问题出在哪里(VS或Virtuoso驱动程序),我非常感谢您的建议。

我认为,您可以尝试从Virtuoso 6.4客户端连接工具包安装32位ODBC驱动程序

p、 美国

  • 64位ODBC应用程序需要64位ODBC驱动程序(和64位ODBC驱动程序管理器)
  • 32位ODBC应用程序需要32位ODBC驱动程序(和32位ODBC驱动程序管理器)

你不能把它们混在一起。

我不太清楚你的问题是什么

Visual Studio安装的位是什么,即32位还是64位

system32/odbcad32.exe是64位ODBC驱动程序管理器,尽管有“system32”引用,这是微软从32位Windows时代保留下来的历史文件夹,将实际的32位二进制文件放在64位系统的sysWOW64文件夹中

更糟糕的是,在我使用的最后一个64位Visual Studio中,开发环境实际上是32位的,部署是64位的,开发和部署需要32位和64位驱动程序,请参阅


由于Virtuoso 7仅以64位形式提供,并且Virtuoso 6 ODBC驱动程序(以及一般的数据访问客户端)与Virtuoso 7服务器兼容,因此您可以安装Virtuoso 6商业版(正如Sergei所提到的)或开源()32和64位ODBC驱动程序,然后VS应该可以正常工作,因为它有一个用于开发,一个用于部署

我和一个老司机一起工作(6.0.3)。我很犹豫是否要把这个标记为“正确”的答案,因为这只是一个可能有副作用的解决办法。但现在还是要谢谢你。