[任何人都可以帮我,以下代码vb6在Windows 7 32位中运行正常,但在Windows 7 32或Windows 10 64位中运行不正常。
我的用于mysql数据库odbc驱动程序3.51的dsn创建的vb6代码如下:-
Private Declare Function SQLConfigDataSource Lib "ODBCCP32.DLL" (ByVal hwndParent As Integer, ByVal fRequest As Integer,
ByVal lpszDriver As String, ByVal lpszAttributes As String) As Integer
Dim Attr as string
Attr = "SERVER=localhost" & Chr(0)
Attr = Attr & "DSN=ABC" & Chr(0)
Attr = Attr & "DESCRIPTION=DSN For ABC" & Chr(0)
Attr = Attr & "DATABASE=mysqltestdb" & Chr(0)
Attr = Attr & "User=root" & Chr(0)
Attr = Attr & "Password=abctest" & Chr(0)
Attr = Attr & "option=2" & Chr(0)
iReturn = SQLConfigDataSource(0, 1, "MySql ODBC 3.51 Driver", Attr)
在Windows 64位系统上,32位版本的DLL位于“ C:\ Windows \ SysWOW64”文件夹中。默认情况下,SQLConfigDataSource
是从包含32位DLL的“ C:\ Windows \ System32”文件夹加载的,这会导致函数出错。我知道这似乎是倒退,但实际上是它的设计方式,this解释了为什么会这样。
如下声明函数,然后尝试:
Private Declare Function SQLConfigDataSource _
Lib "C:\Windows\SysWOW64\ODBCCP32.DLL" (ByVal hwndParent As Integer, _
ByVal fRequest As Integer, _
ByVal lpszDriver As String, _
ByVal lpszAttributes As String) As Integer