php7.4使用FFI连接C语言的动态库

注意php7.4支持的FFI只支持对动态库里的C接口的调用,并不支持C++。
网上看了一篇文章很受益:PHP FFI详解 - 一种全新的PHP扩展方式
我总结的代码就来自这篇文章,所以此文不能算原创了。
首先,我用Visual C++6.0(我就喜欢这种小的软件)绿色版,开发了一个dll扩展,开发扩展的方法见文章:《Visual C++6.0编写Win32动态库》。
将dll拷贝到我的Thinkphp6项目的extend目录里了。然后php写代码:

$dll = root_path() . 'extend' . DIRECTORY_SEPARATOR . 'MisDll.dll';
		$lib = \FFI::cdef(<<<CTYPE
			int test(int zh,int ych);
			CTYPE, $dll);
		echo "DLL TEST输入结果14则代表运行正常,结果:" . $lib->test(2, 12);

页面访问看到输入结果为14,就代表成功了。

对了,别忘记php手动开启对ffi的支持:
放开extension=ffi的注释,还有修改ffi.enable=true,重启即可。

注意:PHP FFI详解 - 一种全新的PHP扩展方式介绍的可以预加载的功能,在windows里并不被支持!你调试的时候看到php的错误信息就知道了。在Linux里看来可以,看来运行php还是在Linux效率高啊!

展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读