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

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:36   1168   0

本文大部分参考: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();

?>

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP