首页 > 开发 > 综合 > 正文

windows下简单编写extension的一些要点

2020-10-03 20:05:52
字体:
来源:转载
供稿:网友

并不是完整的文章或者教学。也不涉及关于使用VC++ 6.0的任何知识。仅仅是快速在windows下开发extension的想法。

在linux或unix下编译,开发extension相信每个认真看过手册的人都会了。但是windows下编译php本身就是一个难题,我至今未能在windows下完整编译php5,总是缺少一些lib。对于windows下编译php5并没有很多的文档,不过手册上已经足够详细了。但是既然仅仅为了编写一个ext就搞出一大堆的东西似乎有些划不来,那就简单一些,只编写ext并编译。

步骤简介

1.取得php代码,比如php-5.1.4。

2.取得windows下的php二进制包,要跟代码同版本。

3.进入原代码目录 php-5.1.4/ext/ 并使用CLI解释执行ext_skel_win32.php。


php-win ext_skel_win32.php --extname=HelloWorld



4.从二进制包中的dev目录取出php5ts.lib,放到刚才执行ext_skel_win32.php产生的php-5.1.4/ext/HelloWorld/ 《==重要!

5.编写ext功能代码,可参考精华贴,乔版主那篇unix下开发php4的ext的贴。差不多。

6.在php-5.1.4/ext/HelloWorld/下有HelloWorld.dsp,用VC++打开,编译。在php-5.1.4/Release_TS/ 下会产生php_HelloWorld.dll。

7.如何使用这个ext不多说了。

------------------------------

要点1:一定要安装cygwin,如果cygwin安装路径不是c:/cygwin的话,要手工修改ext_skel_win32.php中的$cygwin_path
比如我的
 

$cygwin_path 'Z:/working/bin/cygwin/bin';



要点2:编译ext需要php5ts.lib或php5ts_debug.lib,分别对应Release和Debug方式编译。如果编译时提示php5ts_debug.lib找不到,那么要看看编译方式是什么。

------------------------------

问题1:这样编译的好处是什么?
回答:快!如果不使用php二进制包中编译好的php5ts.lib,而从头在windows下编译php5ts.lib,要配置一个编译环境。麻烦得很,vc自己带得lib缺少很多包,php带的也缺少,要在cygwin里把包都找齐。用dev/php5ts.lib直接编译ext就跳过了编译 php的步骤,可以快速开发ext。同时保证跟官方发布的windows二进制包匹配。

问题2:这样编译跟cygwin下编译有什么区别?
回答:cygwin下编译的php无法脱离cygwin环境,编译的ext自然也无法脱离cygwin。


补充中...还有一些没想到~~

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表