小菜.net 发表于 2009-10-20 19:10:41

函数带指针参数,在au3里如何调用呢?

本帖最后由 小菜.net 于 2009-10-22 16:32 编辑

一个BC++写的DLL,其中某个函数的声明如下:DLL int WINAPI JBC7K2_SetTime(char *ip, int port);在au3中调用此函数成功,但是,不是我想要的结果。

问题就是出在这个char *ip这里,如何才能保证这个参数正确呢?

baikaifang 发表于 2009-10-21 22:36:35

$tIp = DllStructCreate("char Ip") ;创建一个结构体
$pIp = DllStructGetPtr($tIp)      ;取结构体的指针,因为该结构只有一个char类型成员,
                                  ;所以结构的指针就是Char成员的指针。

小菜.net 发表于 2009-10-22 00:35:02


$dll = DllOpen("xxx.dll") ;打开dll文件

$ip=DllStructCreate("char ip;")
DllStructSetData($ip ,"ip","192.168.0.136")

DllCall($dll, "int", "JBC7K2_SetTime", "ptr",DllStructGetPtr( $ip,"ip"), "int", "5102") ;我原来的代码
DllCall($dll, "int", "JBC7K2_SetTime", "ptr",DllStructGetPtr( $ip), "int", "5102") ;按照楼上的修改

;................
上面两种方法都不行,返回结果一样。

bing614 发表于 2009-10-22 07:00:05

发参数上来看看,

wisly 发表于 2009-10-22 11:05:00

根据官方帮助手册改的,测试没问题$ip=DllStructCreate("char ip")
DllStructSetData($ip ,"ip","192.168.0.136")

MsgBox(0,"DllStruct","Struct Size: " & DllStructGetSize($ip) & @CRLF & _
      "Struct pointer: " & DllStructGetPtr($ip) & @CRLF & _
      "Data:" & @CRLF & _
      DllStructGetData($ip,'ip') & @CRLF)
页: [1]
查看完整版本: 函数带指针参数,在au3里如何调用呢?