vc6.0 下 php扩展开发示例

本文详细介绍了如何在VC6.0环境下开发PHP扩展。首先,列举了所需的工具,如vc6.0、php 5.3.13源码、bison和cygwin。接着,说明了配置环境变量、编译安装php源码的过程,以及使用ext_skel_win32.php创建扩展文件夹。然后,指导编辑php_test.h和test.c文件以添加新函数,并将编译方式设置为Release。通过F5编译生成dll文件,将其放入WAMP的phpext目录,并更新php.ini以加载扩展。遇到问题时,提供了可能的解决办法,包括下载php5ts.lib和替代的扩展骨架生成方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

准备工具:

vc6.0

php 5.3.13 源码

bison编译工具

cygwin工具 

配置安装工具并添加环境变量


包括:D:\bison\bin;D:\tools\Microsoft Visual Studio\VC98\Bin;D:\tools\Microsoft Visual Studio\Common\MSDev98\Bin;


首先,编译安装php源码:

           解压php 5.3.13到D:\php-5.3.13

执行

D:\php-5.3.13>buildconf
Rebuilding configure.js 
Now run 'configure --help'

建立一个临时环境变量 并编译php

D:\php-5.3.13>set path=%path%;D:/php-5.3.13/bin  
D:\php-5.3.13>cscript /nologo configure.js --with-php-build="../php-5.3.13" --without-libxml --disable-odbc  

表示编译成功,main下面多了一个 config.w32.h


修改 D:\php-5.3.13\ext 下的  ext_skel_win32.php 文件:

设定自己的cygwin路径

$cygwin_path = 'c:\cygwin64\bin';

执行骨架搭建文件 创建test扩展

D:\php-5.3.13\ext>php ext_skel_win32.php  --extname=test

在ext下生成名为test的扩展文件夹


用vc6.0 打开test扩展项目


1. 修改php_test.h
扩展的新函数: 在PHP_FUNCTION(confirm_test_compiled); 行后添加一行

PHP_FUNCTION(confirm_test_compiled);
PHP_FUNCTION(test);  // 新增的行

2. 修改test.c
在PHP_FUNCTION(confirm_test_compiled) 后添加我们的新函数

PHP_FUNCTION(test){
    php_printf("Hello C extension");
}

在数组zend_function_entry test_functions[]增加一行

const zend_function_entry test_functions[] = {
	PHP_FE(confirm_test_compiled,	NULL)		/* For testing, remove later. */
	PHP_FE(test, NULL) // 新增的行
	PHP_FE_END	/* Must be the last line in test_functions[] */
};


1. 修改编译方式为release:

       选择Build->Set Active Configuration设置默认编译方式为Release, 否则会提示缺少php5ts_debug.lib ,其实就是php5ts.lib。


2. 按F5编译。会在ext上级的Release_TS目录下生成php_test.dll


生成文件在可以放到wamp\php\ext\目录下

 

修改wamp\php\php.ini

[PHP]

添加,最后放在 extension= 最后

extension=php_test.dll



如果报错  php5ts.lib  link.exe 的错误 请下载对应版本php二进制源码包 将dev\php5ts.lib 拷贝到 本项目下 ext\test 下

如果报错

..\..\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

请找到main/streams/php_stream_transport.h 加上一个:typedef int socklen_t;


还有一种不需要安装 cygwin 就可生产扩展骨架 的方法 具体参照

http://blog.163.com/023_dns/blog/static/11872736620126542553319/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值