php开发扩展环境的搭建(Windows)
php开发扩展环境的搭建(Windows)
前期准备:
(1) 下载php-5.3.10源码包(php-5.3.10.tar.bz2)并解压到C:\php-5.3.10;下载二进制包php-5.3.10-Win32-VC9-x86.zip,也解压到C:\php-5.3.10,重复的文件全部覆盖。
(2) 下载php-sdk-binary-tools-20110915.zip,并解压到C盘下,并将解压后的bin目录添加到系统变量。
(3) 命令行就如C:\php-5.3.10,输入buildconf.bat。 //生成configure.js
(4)输入cscript /nologo configure.js --with-php-build="../win32build" --without-libxml --disable-odbc //生成config.win32.h
(5)修改config.win32.h(与编译php源码的编译版本相同)
一 使用自动构建工具搭建php扩展(php源码目录下运行)
Php ext_skel_win32.php –extname=hello
注:myext扩展名
生成如下:

二 添加依赖的php5ts.lib
将php二进制包中的dev目录下的php5ts.lib拷贝到你的扩展目录中
三 编写自己的函数
(1)修改php_hello.h文件
扩展新的函数:在PHP_FUNCTION(confirm_myhello_compiled);行后添加一行 PHP_FUNCTION(exttest); //exttest为函数名
(2)修改hello.c 文件
在数组zend_function_entry myhello_functions[]增加一行
1. zend_function_entry myhello_functions[] = {
2. PHP_FE(confirm_myhello_compiled, NULL) /* For testing, remove later. */
3. PHP_FE(exttest, NULL) // 新增的行
4. {NULL, NULL, NULL} /* Must be the last line in myhello_functions[] */
5. };
在PHP_FUNCTION(confirm_myhello_compiled) 后添加我们的新函数
PHP_FUNCTION(exttest) {
char *arg = NULL;
int n1,n2;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ll", &n1, &n2) == FAILURE) { return; }
RETURN_LONG(n1+n2);
}
四 构建dll扩展文件 (vc9(vs2008)为最低版本)
vs2008打开hello.dsp,选择编译方式为Release_TS,然后开始编译,或者在通过命令行进入ext/hello 执行 msdev hello.dsp /MAKE “hello - Win32 Release_TS” 如果成功,则会在ext同级目录Release_TS中生成php_hello.dll。
五 测试
<?php
echo confirm_firstext_compiled('firstext');
echo '<br/>1+2='; echo exttest(1,2);
?>

Tips(错误):
(1)无php5ts.lib文件:将C:\php-5.3.10\dev\php5ts.lib拷贝到myextension目录下
(2)没有找到cl.exe(加入vs2008的环境变量)
(3)"sh" 下载cygwin,并修改ext_skel_win32.php的path
(4)其它错误参考原文
原文地址:
http://blog.csdn.net/u013927110/article/details/44020675
http://blog.csdn.net/qian_f/article/details/27205567
php开发扩展环境的搭建(Windows)的更多相关文章
- JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java
JAVA 基础开发环境 vscode 搭建 来源 https://www.cnblogs.com/freewsf/p/7744728.html 对于使用 Visual Studio Code 的 Ja ...
- PHP扩展开发编译环境的搭建
PHP允许使用扩展的方式,直接使用C语言开发PHP的功能,由于编译的问题,很多底层和框架的基础工作如果用PHP必然会带来额外的开销,降低系统的吞吐量,必然yaf就是这样的思路,把框架封装在扩展里,让系 ...
- 2015 - 4- 21 iOS开发越狱环境的搭建1
2015 - 4- 20 1. 越狱环境的搭建 http://www.iduuke.com/2030.html http://www.cnblogs.com/xiongwj0910/archi ...
- Android开发-之环境的搭建
关于Android开发可以使用的工具有eclipse和Android studio等,这两个工具都各有各的好处和不足.studio是谷歌推出的一款开发工具,而我们都知道Android就是谷歌公司的,所 ...
- 智能合约 solidity 开发的环境基本搭建
以太坊Dapp开发快速入门 以太坊为开源社区,虽然设计东西都很优秀,但是组件十分的杂乱,因此下面首先简单介绍下以太坊的一些常用组件以及各种工具介绍 Geth Geth是由以太坊基金会提供的官方客户端软 ...
- .net core 2.0学习笔记(一):开发运行环境搭建
期待已久的.net core 2.0终于发布了!大家等的花儿都谢了. 不过比预期提前了一个多月,这在微软历史上还真的不多见.按照历史经验看,2.0版本应该比较靠谱,我猜这也是社区非常火爆的原因吧.下面 ...
- Cocos2d-x Lua游戏开发Mac环境搭建以及一点点感悟
接触Cocos2d-x 最近由于公司项目的需要,自己开始接触Cocos,开始做一些简单的轻量级的游戏,以前没有接触过这一块的东西,也是借助这个机会学习一下游戏的开发,由于以前自己接触的全都是iOS和A ...
- net core 2.0学习笔记(一):开发运行环境搭建 (转)
期待已久的.net core 2.0终于发布了!大家等的花儿都谢了. 不过比预期提前了一个多月,这在微软历史上还真的不多见.按照历史经验看,2.0版本应该比较靠谱,我猜这也是社区非常火爆的原因吧.下面 ...
- Cocos 2d-X Lua游戏开发Mac环境搭建以及一点点感悟
接触Cocos2d-x 最近由于公司项目的需要,自己开始接触Cocos,开始做一些简单的轻量级的游戏,以前没有接触过这一块的东西,也是借助这个机会学习一下游戏的开发,由于以前自己接触的全都是iOS和A ...
随机推荐
- istio kiali 亲和性调度
一.节点调度 在开始 kiali 亲和性调度之前,先演示一个简单的例子介绍 pod 选择调度到指定 node: 节点打标 使用命令查看当前所有 k8s 节点: [root@k8s-master ~]# ...
- SQL Server批量向表中插入多行数据语句
因自己学习测试需要,需要两个有大量不重复行的表,表中行数越多越好.手动编写SQL语句,通过循环,批量向表中插入数据,考虑到避免一致问题,设置奇偶行不同.个人水平有限,如有错误,还望指正. 语句如下: ...
- 2018年第九届蓝桥杯B组(201803-----乘积尾零)
标题题目:乘积尾零 如下的10行数据,每行有10个整数,请你求出它们的乘积的末尾有多少个零? 5650 4542 3554 473 946 4114 3871 9073 90 4329 2758 79 ...
- SQL Server On Linux:基于实际项目案例,总结功能支持情况及相关问题解决方案,讲如何快速完成迁移
上个月,有个朋友问我说Sql Sever向Mysql迁移有什么好的经验分享,他们公司客户明确提出不再提供Windows服务器,现在计划Mysql迁移.我说Mysql迁移成本太高了,不妨可以了解一下SQ ...
- .NET 云原生架构师训练营(模块二 基础巩固 RabbitMQ Masstransit 详解)--学习笔记
2.6.7 RabbitMQ -- Masstransit 详解 Consumer 消费者 Producer 生产者 Request-Response 请求-响应 Consumer 消费者 在 Mas ...
- Vue css过渡 和 js 钩子过渡
css过渡 <transition name="slide"> <div v-show="!showChatInput" class=&quo ...
- Openstack OCATA 安装环境说明(一) 未完成版本
1 Openstack简介: 2 实验说明: 3 图例: 4 实验环境说明: 4.1 ) 网卡说明: 网卡名 网 段 连接方式 说明 eth0 10.10.5.0/24 仅主机网络 内部网络自动以IP ...
- Java 在pom.xml中配置build resources, 来防止我们资源导出失败问题(Maven项目)
在pom.xml中配置build, 来防止我们资源导出失败问题 <!--在build中配置resources, 来防止我们资源导出失败问题--> <build> <res ...
- Java 基于 mysql-connector-java 编写一个 JDBC 工具类
用到的 jar 包 jar包地址: mysql-connector-java-5.1.47.jar junit-4.13.jar Maven: <!-- mysql驱动 --> <d ...
- 【Linux】linux中用vim来比较文件内容不同
1. 使用vim的比较模式打开两个文件: vim -d file1 file2 或 vimdiff file1 file2 2. 如果已经打开了文件file1,再打开另一个文件file2进行比较: : ...