• 注册
  • 关于作者
    个人说明:他太懒了,什么都没有写
    关注 0 粉丝 0 喜欢 0 内容 238
    雅安
    聊天 送礼
    • 查看作者
    • windows下简单编写extension的一些要点

      并不是完整的文章或者教学。也不涉及关于使用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源代码生成 main/config.w32.h

      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。

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

      PHP5.3的VC9、VC6、Thread Safe、Non Thread Safe的区别

      PHP

    • 0
    • 0
    • 0
    • 54
    • 单栏布局 侧栏位置: