php擴充開發

來源:互聯網
上載者:User

標籤:c   a   tar   ext   int   com   

本文的環境是windows下開發php版本5.3

1、下載php5.3的源碼包和php5.3的二進位包(平時使用的php程式包)

2、下載cygwin,並預設安裝在c:\cygwin,因為產生php擴充架構的程式需要cygwin

3、假設php擴充的工作目錄為d:\php,解壓源碼包和二進位包到這個目錄

4、cmd命令列在d:\php\ext目錄中運行 php ext_skel_win32.php --extname=yourext  (如果php.exe程式的路勁未加入系統內容變數則需要自己指定路徑)

5、如果順利的話應該在ext目錄下產生了yourext的目錄了,目錄中有個xmltpm.sln的檔案,用vs2008(也就是vs9)開啟,貌似我用vc6開啟編譯有很多編譯錯誤,可能因為官網上說明php5.3對應vc2008導致的

6、現在加入自己的第一個函數,在yourext.h中找到PHP_FUNCTION(confirm_yourext_compiled);/* For testing, remove later. */ 這一行,在下面加入PHP_FUNCTION(your_func); 代表聲明了your_func的函數

7、在yourext.c中找到PHP_FE(confirm_yourext_compiled,NULL)/* For testing, remove later. */ 下面加上 PHP_FE(your_func,NULL)

8、在yourext.c中找到PHP_FUNCTION(confirm_yourext_compiled) 下面加上

 PHP_FUNCTION(your_func)

{

php_printf("Hello, php ext");

}

這樣就完成了一個函數的添加

9、現在開始編譯,菜單->產生,應該會提示找不到..\main\config.w32.h,在d:\win32\build\config.w32.h.in 到d:\php\main目錄下並改名為config.w32.h

然後需要複製d:\php\dev\php5ts.lib 到d:\php\ext\yourext 目錄

順利的話應該可以編譯成功了,至少我編譯成功了

10、因為我編譯的是非安全執行緒版本的,所以需要修改工程屬性-》配置屬性-》c/c++-》前置處理器 刪除前置處理器定義裡的ZTS=1,

然後必須在 d:\php\main\config.w32.h  加上一句#define PHP_COMPILER_ID "VC9"

否則會出現下面的錯誤

PHP Warning: PHP Startup: yourext: Unable to initialize module
Module compiled with build ID=API20090626,NTS
PHP compiled with build ID=API20090626,NTS,VC9
These options need to match
in Unknown on line 0

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.