1

好久不见了,本来都准备相忘江湖了,但是php的ffi那么火还是想推广下,毕竟世界上最好的语言是吧,简单编译个c库把,然后用php ffi调用吧。

windows下本来用msvc编译是最好的,当然跟linux方式一样,采用了cmake+gnu方式编译,当然我也是偷个懒。

工具

  • cmake
  • mingw64
  • swoole_cli 带ffi扩展 (以前文章写过 自行查阅编译)
自行安装 程序员装个工具而已是吧

开始编译

1. 下载 c库

简单用bson库吧,[bson库]下载(https://github.com/mongodb/libbson)

image.png

2. 做好准备

查看下CMakeLists.txt,看来什么都已经有了,那我们直接开始吧
image.png

3. 开始编译

新建build64文件夹,上面填写c库路径,下方填写输出目录,后点击configure,后选择mingw-makefile
image.png
然后下图点击生成即可
image.png

4. 开始编译

执行如下命令,其实就跟linux编译是一样的,make就完事了
image.png

5. 取出dll文件

把dll文件拿到相应目录即可
image.png
note :成功编译完成的情况下,dll文件在build64目录下

php ffi调用

把dll文件放在项目目录下,然后编写ffi代码
image.png

运行结果

image.png

ok,已经完美运行了。

结尾

以上案例只是简单的编译和使用,为什么使用bson库呢,当然也想抛转引玉一下,试想下用swoole的socket客户端实现协议,然后用ffi做bson的处理,是不是就能做到mogodb协程化了,然后为啥我不做,因为我已经没有从事相关的工作了,对mogodb的需求也不是很明显了,但是也想php未来变得更好,人不能忘本,毕竟是一开始让我吃上饭的工具。


vanve
27 声望2 粉丝