php从7.4版本以后内置了FFI扩展,估计是时间太短的原因,网路上相关文章比较少,大部分都是搬用的官网的说明
最近有个项目需要访问C编写的动态库中的函数 所以用到了FFI这个扩展
安装扩展的方法就不说了
在此记录下碰到的问题:
windows环境 提示Fatal error: Uncaught FFI\Exception: Failed loading ‘D:/mypath/test.dll’;
提示这个错误可能是应为别人开发的动态库 可能有c的头文件 也就是对应的 test.h文件要和test.dll文件一个目录下,
另外一个原因就是编写的动态库可能是win32的 需要用win32的php程序才能执行
$str = <<<EOF
int testAdd(int a,int b);
int testChar(char *a);
EOF;
$ffi = \FFI::cdef($str, 'D:/mypath/test.dll');
$result1 = $ffi->testAdd(11,22);
另外在linux环境下 好像FFi是无法加载dll动态库 只能编译成.so文件