vb 调用C写的动态库奇怪的问题!

cmt123 2011-11-09 12:10:22
我用VB调用C写的动态库,发现奇快的问题,在调试时函数返回为-21,编译后返回函数0,大家帮帮我啊。
C函数:ret = JBC7K2_SetTime(g_devip,g_devport);
VB中声明:Public Declare Function JBC7K2_SetTime Lib "JBC7200.dll" (ByVal ip As String, ByVal port As Integer) As Integer
...全文
51 点赞 收藏 8
写回复
8 条回复
fooljake 2011年11月10日
你确信2次运行调用的是同一版本的dll吗?若没有把握,可用 “开始\程序\附件\系统工具\系统信息/软件环境/加载的模块”查看。很可能不是同一个路径的dll,原因也就是其中C代码本来不同,运行结果不同.
回复 点赞
cmt123 2011年11月09日
int WINAPI JBC7K2_SetTime(char *ip, int port)
回复 点赞
myhaikuotiankong 2011年11月09日
[Quote=引用 6 楼 of123 的回复:]
Public Declare Function JBC7K2_SetTime Lib "JBC7200.dll" (ByVal ip As Byte, ByVal port As Long) As Long

Dim ret As Long, ip(255) As Byte

ret = JBC7K2_SetTime(ip(0), 1)
[/Quote]可以试试
回复 点赞
of123 2011年11月09日
Public Declare Function JBC7K2_SetTime Lib "JBC7200.dll" (ByVal ip As Byte, ByVal port As Long) As Long

Dim ret As Long, ip(255) As Byte

ret = JBC7K2_SetTime(ip(0), 1)
回复 点赞
赵4老师 2011年11月09日
调用时参数不要用String要用比如String*10并且以CHR(0)结尾
回复 点赞
cmt123 2011年11月09日
不行,我试过了啊 Public Declare Function JBC7K2_SetTime Lib "JBC7200.dll" (ByVal ip As String, ByVal port As long) As long
回复 点赞
贝隆 2011年11月09日
[Quote=引用 2 楼 worldy 的回复:]
int WINAPI JBC7K2_SetTime(char *ip, int port)
的VB声明有问题:c 的int对应于VB为long

Public Declare Function JBC7K2_SetTime Lib "JBC7200.dll" (ByVal ip As String, ByVal port As Integer) As Integer

Public De……
[/Quote]
赞同,先按这个试一试
回复 点赞
worldy 2011年11月09日
int WINAPI JBC7K2_SetTime(char *ip, int port)
的VB声明有问题:c 的int对应于VB为long

Public Declare Function JBC7K2_SetTime Lib "JBC7200.dll" (ByVal ip As String, ByVal port As Integer) As Integer

Public Declare Function JBC7K2_SetTime Lib "JBC7200.dll" (ByVal ip As String, ByVal port As long) As long

回复 点赞
发动态
发帖子
VB基础类
创建于2007-09-28

2748

社区成员

19.7w+

社区内容

VB 基础类
社区公告
暂无公告