函数带指针参数,在au3里如何调用呢?
本帖最后由 小菜.net 于 2009-10-22 16:32 编辑一个BC++写的DLL,其中某个函数的声明如下:DLL int WINAPI JBC7K2_SetTime(char *ip, int port);在au3中调用此函数成功,但是,不是我想要的结果。
问题就是出在这个char *ip这里,如何才能保证这个参数正确呢? $tIp = DllStructCreate("char Ip") ;创建一个结构体
$pIp = DllStructGetPtr($tIp) ;取结构体的指针,因为该结构只有一个char类型成员,
;所以结构的指针就是Char成员的指针。
$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") ;按照楼上的修改
;................
上面两种方法都不行,返回结果一样。 发参数上来看看, 根据官方帮助手册改的,测试没问题$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]