**
以前寫過一次php擴充套件dll,那個是利用呼叫系統的com口實現的擴充套件,與php不能真正融合。心血來潮,研究了一下php的原始碼,網上找了一些資料,自己嘗試寫了乙個擴充套件dll,測試沒問題。下面記錄一下具體擴充套件方法:
3、把vc++ 6.0安裝目錄中的 microsoft visual studio\common\msdev98\bin 絕對路徑新增到系統環境變數中。
4、進入e:\php-5.2.17\ext目錄,複製skeleton資料夾,並重命名為要開發擴充套件的名字,本例為「myfun」。
5、重新命名skeleton.c為myfun.c,skeleton.dsp為myfun.dsp
6、編輯myfun目錄中的php_skeleton.h、myfun.c、myfun.dsp這三個檔案,替換內容中所有extname為myfun,extname為myfun。(一定要嚴格區分大小寫)
下面就進入到編碼階段:
7、開啟php_skeleton.**件(標頭檔案),找到php_function(confirm_myfun_compiled);,在 php_function(confirm_myfun_compiled);,下面編寫php_function(mb_messagebox);,聲 明乙個mb_messagebox函式,此函式的作用僅是輸出js彈出乙個alert訊息框,用於測試。
8、下面定義函式入口,開啟myfun.c檔案,找到php_fe(confirm_myfun_compiled,null) ;,在下面編寫 php_fe(mb_messagebox,null),此處注意一下,php_fe是定義的乙個巨集,所以後面不用加引號。
9、在myfun.c最後面編寫函式的實體部分:
php_function(mb_messagebox)到這**書寫就完成了,下面開始編譯:len = spprintf(&strg, 0, "",arg); //此處正是輸入的js**
return_stringl(strg, len, 0);
}
10、開始->執行,輸入cmd,開啟命令列視窗。
11、進入myfun的目錄,輸入 msdev myfun.dsp /make "myfun - win32 release_ts",回車編譯。
12、如果沒有錯誤,在e:\php-5.2.17下會生成乙個release_ts資料夾,在裡面就可以找到php_myfun.dll檔案。
至此擴充套件dll開發完成,下面在php中進行測試:
13、把php_myfun.dll複製到原php目錄中的ext資料夾內。
14、開啟php.ini檔案,新增當前dll的擴充套件 extension=php_myfun.dll
<?php瀏覽即可看到效果,下面附圖四張:echo mb_messagebox("測試php擴充套件dll by 馬犇");
?>
新增擴充套件:
最終效果:
phpinfo中的擴充套件資訊:
使用C語言來擴充套件PHP,寫PHP擴充套件dll
以前寫過一次php擴充套件dll,那個是利用呼叫系統的com口實現的擴充套件,與php不能真正融合。心血來潮,研究了一下php的原始碼,網上找了一些資料,自己嘗試寫了乙個擴充套件dll,測試沒問題。下面記錄一下具體擴充套件方法 3 把vc 6.0安裝目錄中的 microsoft visual stu...
用C語言寫PHP擴充套件
1 預定義 在home目錄,也可以其他任意目錄,寫乙個檔案,例如caleng module.def 內容是你希望定義的函式名以及引數 int a int x,int y string b string str,int n 2 到php原始碼目錄的ext目錄 cd usr local php 5.4....
用C語言寫PHP擴充套件
用c語言寫php擴充套件 1 預定義 在home目錄,也可以其他任意目錄,寫乙個檔案,例如caleng module.def 內容是你希望定義的函式名以及引數 int a int x,int y string b string str,int n 2 到php原始碼目錄的ext目錄 cd usr l...