在xp环境下编译php的c扩展dll文件(完全步骤解析)

来源:互联网 发布:随州广电网络的电话是 编辑:程序博客网 时间:2024/06/06 02:54

本文大部分参考:windows下开发PHP扩展dll(无需Cygwin)http://hi.baidu.com/30way/blog/item/1827418bf11cdecbfd1f109c.html,对其进行补充和修正;

工具目录:E:\源码包\XP下apache+php+dll编译\

包括php-5.2.17.tar.gz源码包和php-5.2.5-Win32.rar(XP下二进制包);

 

步骤:

1、搭建apache2+php5的windows环境,安装Visual C++6.0(把Microsoft Visual Studio\Common\MSDev98\Bin的绝对路径添加到windows环境变量,到最后,都没添加成功,而是直接在执行程序之前添加运行路径);

2、解压源码包到D:\php-5.2.17,二进制包解压到D:\PHP;

3、进入d:\ php-5.2.17\ext目录,复制skeleton文件夹,并重命名为要开发扩展的名字,本例为“linvo”;

4、把二进制包中dev目录下的php5ts.lib文件,拷入新建的linvo目录(编译需要);

5、修改linvo目录中的php_skeleton.h、skeleton.c、skeleton.dsp这三个文件,把文件名都替换成相应的linvo,并且替换内容中所有extname为linvo,EXTNAME为LINVO(严格区分大小写);

6、编辑php_linvo.h文件(头文件)

在PHP_FUNCTION(confirm_linvo_compiled);下面编写

PHP_FUNCTION(hello);

声明一个hello函数;

7、编辑linvo.c文件(主文件)

在PHP_FE(confirm_linvo_compiled,        NULL) 下面编写

PHP_FE(hello,        NULL)

这是函数入口,下面该写函数主体了

找到PHP_FUNCTION(confirm_test_compiled)函数,该函数是测试函数,在该函数后面新写一个函数

PHP_FUNCTION(hello)

{

        char *arg = NULL;

        int arg_len, len;

        char *strg;

    /* 接收参数 */

        if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &arg, &arg_len) == FAILURE) {

                return;

        }

        len = spprintf(&strg, 0, "Hello,%s", arg);

    RETURN_STRINGL(strg, len, 0);

}

8、运行cmd命令行,进入d:\ php-5.2.17\ext\linvo目录,输入命令(如图1);

9、如果没有错误,则在php_src目录下会生成一个Release_TS文件夹,里面就是编译好的php_linvo.dll扩展;

10、将其拷入运行环境中的php扩展目录D:\PHP\ext;

11、编辑C:\WINDOWS\php.ini,添加extension=php_linvo.dll,重启apache;

12、D:\Program Files\Apache Group\Apache2\htdocs\下创建测试文件test.php,内容如下:

<?php

echo hello('Linvo');

?>

13、通过浏览器访问该文件:http://localhost/test.php,访问成功(如图2);

14、通过phpinfo()也可看到扩展已加载的信息:

<?

phpinfo();

?>

 

原创粉丝点击