程序中DLL的函数是在模块中定义的方式如下: Public Declare Function InitCom Lib "Hy14s.dll" (ByVal ComPort As Integer, ByVal BaudRate As Integer) As Integer 调用上 Dim lRet As Long lRet = InitCom(1, 19200) 也担心返回值类型与lRet 的类型不一致,不过换成一致的一不行!
设计时:Public Declare Function InitCom Lib "C:\WINNT\system32\Hy14s.dll" (ByVal ComPort As Integer, ByVal BaudRate As Integer) As IntegerDim lRet As Long lRet = InitCom(1, 19200)
改成下面这样试试: Public Declare Function InitCom Lib "Hy14s.dll" (ByVal ComPort As Long, ByVal BaudRate As Long) As Long写这个DLL的开发平台中的int(或者Integer)是32位的, 而VB的Integer是16位的,会有问题。
设计时:Public Declare Function InitCom Lib "C:\WINNT\system32\Hy14s.dll" (ByVal ComPort As Integer, ByVal BaudRate As Integer) As IntegerDim lRet As Long lRet = InitCom(1, 19200) 不关事的,程序会自动在程序文件所在的目录下找,如果没有找到则自动在系统目录找文件的, 有时VB是会出现这样的问题,如果不方便调试的话,可以用windbg或ollydbg来调试的(当然这两种方法就没有这么方便了)
Public Declare Function InitCom Lib "Hy14s.dll" (ByVal ComPort As Integer, ByVal BaudRate As Integer) As Integer
调用上
Dim lRet As Long
lRet = InitCom(1, 19200)
也担心返回值类型与lRet 的类型不一致,不过换成一致的一不行!
lRet = InitCom(1, 19200)
Public Declare Function InitCom Lib "Hy14s.dll" (ByVal ComPort As Long, ByVal BaudRate As Long) As Long写这个DLL的开发平台中的int(或者Integer)是32位的, 而VB的Integer是16位的,会有问题。
lRet = InitCom(1, 19200) 不关事的,程序会自动在程序文件所在的目录下找,如果没有找到则自动在系统目录找文件的,
有时VB是会出现这样的问题,如果不方便调试的话,可以用windbg或ollydbg来调试的(当然这两种方法就没有这么方便了)