$api->registerfunction("int Get(DWORD bb, DWORD* cc, char* dd From aa.dll"); 中DWORD*,char*通不过,不带*就补报错! 错误提示: Fatal error: Function Definition Parse Error: parse error in e:\www\test.php on line 19
具体的我也不知道api提供的接口是: EXTERN_C int WINAPI Get(DWORD bb, DWORD* cc, char* dd);在vb中的调用(正确): Declare Function Get Lib "aa.DLL" (ByVal bb As Long, ByRef cc As Long, ByVal dd As Any) As Long
$api->registerfunction("int Get (long bb, long &cc, string dd) From aa.dll"); $api->Get($bb, $cc, $dd); echo $cc;
char* 是字符串指针,传递时用&$dd
那个cc也是用&$cc
中DWORD*,char*通不过,不带*就补报错!
错误提示:
Fatal error: Function Definition Parse Error: parse error in e:\www\test.php on line 19
但w32api_deftype函数知识用于4.2.0 - 4.2.3那我应该怎么写?
dl("php_w32api.dll");
$api = new win32;$api->registerfunction("int Get (long bb, long &cc, string &dd) From aa.dll");$dd = str_repeat("\0", 100);
$api->Get($bb, $cc, $dd);
echo $dd;
?>
那样用虽然不报错,但返回的值却不正确!api函数应该没问题,同一个库文件我在vb6下就正常!参数值跟在vb6下一个样,但结果就不一样!
不然别人很难根据你的情况来说。
EXTERN_C int WINAPI Get(DWORD bb, DWORD* cc, char* dd);在vb中的调用(正确):
Declare Function Get Lib "aa.DLL" (ByVal bb As Long, ByRef cc As Long, ByVal dd As Any) As Long
$api->Get($bb, $cc, $dd);
echo $cc;
那样调用还是不行
我为这个问题郁闷两天了!
各种类型我都试了!他就是不行!
看来,我必须得换方法了!
好像还有一种方法是用com封装,不知道能不能解决我的这个问题?