• 技术文章 >后端开发 >php教程

    在Windows上编译安装AMFEXT for PHP5.3

    2016-06-13 13:02:16原创556
    在Windows下编译安装AMFEXT for PHP5.3
    AMFEXT官方未提供PHP5.3版的dll文件,不得不自己动手编译,以下是编译小记:

    1. 下载必要的软件.
    1). PHP5.3 for Win32二进制和源代码各一份
    2). VC6或以上IDE
    3). Cygwin.
    4). 两个必要的包
    http://www.php.net/extra/bindlib_w32.zip
    http://www.php.net/extra/win32build.zip
    5). 下载amfext 0.9.2-dev版

    2. 解压缩软件到适当目录
    1). 解压缩php二进制代码到e:\php5.3.6目录(其实我们只感兴趣dev子目录下的php5ts.lib文件)
    2). 解压缩php源代码到e:\php5.3.6-sources目录
    3). 解压缩amfext 0.9.2到e:\php5.3.6-sources\ext\amfext目录下
    4). 解压缩bindlib_w32.zip和win32build.zip到同样目录(如:c:\win32build)
    设置路径set path=%path%;c:\win32build\bin

    3. 编译amfext VC工程
    1). 打开amfext.dsp工程文件
    2). 设置工程
    Project->Settings(Win32 Release)->Link 为:e:\php5.3.6\dev\php5ts.lib
    Build->Set Active Project Configuration选中amftext - Win32 Release.
    3). 编译amfext
    由于amfext for php5.3有个bug,所以编译之前要修改amf.c
        //On line 1188, replace:  
        int deallocResult = (*struc)->refcount;  
        //with  
        int deallocResult = Z_REFCOUNT_PP(struc); 
        
        //On line 2674, replace:
        newval->refcount--;
        //with
        Z_DELREF_P(newval);
    

    现在按F7编译工程,提示
    Cannot open include file: '../main/config.w32.h',提示找不到文件,到php源代码的字母main目录下一看,果然没有这个文件,要自己生成这个文件:
    步骤1. 到PHP源代码根目录执行buildconf.bat
    步骤2. 到PHP源代码根目录执行configure.bat(或者执行 cscript /nologo configure.js --with-php-build="../win32build" --without-libxml --disable-odbc)
    如果没有之前的set path=%path%;D:\win32build\bin会出现如下提示:
    Checking for bison.exe ...
    ERROR: bison is required

    重新编译工程,报错。一大堆的php_stream_transport.h error
    形如
    ..\..\main\streams/php_stream_transport.h(85) : error C2143: syntax error : missing ')' before '*'
    ..\..\main\streams/php_stream_transport.h(85) : error C2081: 'socklen_t' : name in formal parameter list illegal

    这是由于找不到宏报的语法错误。打开这个文件,添加
    typedef int socklen_t;

    到文件头部。

    重新编译工程,不出意外在php源代码ext子目录就可以看到php_amf.dll

    1 楼 wanluoliang 2011-07-12

    非常感谢你的教程。。。。。。。。。。。。。。

    2 楼 live711 2011-08-13

    你编译的dll能下载过来直接用吗?

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:PHP AMFEXT build 5.3 ERROR
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• PHP8.2将有哪些改动(性能改进、新特性)!• PHP8.2最新进展,即将进行新特性冻结!• 这么写是为啥?运行过程是怎样的 • 正则不会 求解决解决办法 • 请问一个文本存放的有关问题,没搞明白如何整
    1/1

    PHP中文网