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效率高啊!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章