安裝好如下軟體:
[quote]
1. vc++ 6
2. php二進位制環境
3. cygwin.
[/quote]
ext_skel是建立擴充套件的shell,在windows上無法執行,所以就必須要有cygwin。
[color=red][b]ii. 建立php擴充套件骨架目錄檔案[/b][/color]
如果你的cygwin沒有安裝在c:\cygwin,進入php原始碼包\ext目錄下,修改ext_skel_win32.php :
$cygwin_path = 'c:\cygwin\bin';
修改為你的cygwin目錄
$cygwin_path = 'd:\cygwin\bin';
命令列方式進入ext目錄然後執行:
php ext_skel_win32.php --extname=myhello
(當然,為了保證上面的命令列能正常執行,首先你得確保你的php目錄在系統的環境變數裡)
執行該命令後,有人發現下面的錯誤
[quote]warning: fopen(myhello/myhello.dsp): failed to open stream: no such file or directory in d:\cygwin\php-5.2.6\ext\ext_skel_win32.php on line 45
warning: fopen(myhello/myhello.php): failed to open stream: no such file or directory in d:\cygwin\php-5.2.6\ext\ext_skel_win32.php on line 52
[/quote] 說明你的 cygwin 安裝不完整。要是沒報錯你的myhello擴充套件就建立成功了。這就是乙個簡單的擴充套件框架,用純c語言編寫。
[b][color=red]iii. 新增依賴的php5ts.lib[/color][/b]
在php的二進位製包中的 dev目錄下將 php5ts.lib 拷到我們的myhello目錄中, 否則編譯將通不過。
[color=red][b]iv. 新增hello c**[/b][/color]
生成的myhello目錄中有關鍵檔案包括
myhello.dsp,
myhello.c,
php_myhello.h,
其他檔案暫時不必關心.
1. 修改php_myhello.h
擴充套件的新函式: 在php_function(confirm_myhello_compiled); 行後新增一行
php_function(confirm_myhello_compiled);
php_function(myhello); // 新增的行
2. 修改myhello.c
在php_function(confirm_myhello_compiled) 後新增我們的新函式
php_function(myhello)
在陣列zend_function_entry myhello_functions增加一行
zend_function_entry myhello_functions = /* must be the last line in myhello_functions */
};
[color=red][b]v. 構建dll檔案[/b][/color]
用vc6開啟我們的工程,就是myhello.dsp
1. 修改編譯方式為release: 選擇build->set active configuration設定預設編譯方式為release, 否則會提示缺少php5ts_debug.lib ,其實就是php5ts.lib。
2. 按f5編譯。會在ext上級的release_ts目錄下生成php_myhello.dll
[quote]
msdev myhello\myhello.dsp /make "myhello - win32 release_ts"
[/quote]
[color=red][b]vi. 整合dll到php中。[/b][/color]
1. 把我們生成的 php_myhello.dll放到二進位制php環境的ext目錄下.
2. 然後修改php.ini, 新增 extension=php_myhello.dll 重啟apahce。
3. 新建c_test.php 內容為
<?php myhello(); ?>
在瀏覽器裡開啟會看到頁面:
[quote] hello c extension.
[/quote]
在Windows下寫PHP的C擴充套件
安裝好如下軟體 引用1.vc 6 2.php二進位制環境 3.cygwin.如果你的cygwin沒有安裝在c cygwin,進入php原始碼包 ext目錄下,修改ext skel win32.php cygwin path c cygwin bin 修改為你的cygwin目錄 cygwin path...
在Windows下原始碼編譯PHP
最近在學習編寫php拓展,懶得裝linux,就研究了一下在windows下編譯php的方法,總算搭建好了在windows下開發php拓展的環境。1 在c盤新建乙個資料夾,c phpdev 4 獲取編譯好的bison.exe和flex.exe,儲存到桌面或者其他c phpdev以外的地方。分別開啟壓縮...
C 在windows下的異常處理
專案大了 多了以後難免會出些問題導致程式崩潰,為了快速定位崩潰的位址與原因,引入了setunhandledexceptionfilter這個api。久了後發現這個api有些情況下無法work,異常會被其他異常處理接管。這樣就無法定位到自己的崩潰原因。後面查了下,大致是在新的msvcr.dll中會接管...