当前位置:编程学习 > VB >>

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

我用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
int WINAPI JBC7K2_SetTime(char *ip, int port) 本帖最后由 bcrun 于 2011-11-20 11:49:15 编辑
引用 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……

赞同,先按这个试一试 不行,我试过了啊 Public Declare Function JBC7K2_SetTime Lib "JBC7200.dll" (ByVal ip As String, ByVal port As long) As long
调用时参数不要用String要用比如String*10并且以CHR(0)结尾 本帖最后由 bcrun 于 2011-11-20 11:52:01 编辑
引用 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)
可以试试 你确信2次运行调用的是同一版本的dll吗?若没有把握,可用 “开始\程序\附件\系统工具\系统信息/软件环境/加载的模块”查看。很可能不是同一个路径的dll,原因也就是其中C代码本来不同,运行结果不同.
补充:VB ,  基础类
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,