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
...全文
81 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
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

7,786

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧