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)的更多相关文章

  1. JAVA 基础开发环境 vscode 搭建 Windows下VSCode编译运行简单java

    JAVA 基础开发环境 vscode 搭建 来源 https://www.cnblogs.com/freewsf/p/7744728.html 对于使用 Visual Studio Code 的 Ja ...

  2. PHP扩展开发编译环境的搭建

    PHP允许使用扩展的方式,直接使用C语言开发PHP的功能,由于编译的问题,很多底层和框架的基础工作如果用PHP必然会带来额外的开销,降低系统的吞吐量,必然yaf就是这样的思路,把框架封装在扩展里,让系 ...

  3. 2015 - 4- 21 iOS开发越狱环境的搭建1

    2015 - 4- 20   1. 越狱环境的搭建   http://www.iduuke.com/2030.html http://www.cnblogs.com/xiongwj0910/archi ...

  4. Android开发-之环境的搭建

    关于Android开发可以使用的工具有eclipse和Android studio等,这两个工具都各有各的好处和不足.studio是谷歌推出的一款开发工具,而我们都知道Android就是谷歌公司的,所 ...

  5. 智能合约 solidity 开发的环境基本搭建

    以太坊Dapp开发快速入门 以太坊为开源社区,虽然设计东西都很优秀,但是组件十分的杂乱,因此下面首先简单介绍下以太坊的一些常用组件以及各种工具介绍 Geth Geth是由以太坊基金会提供的官方客户端软 ...

  6. .net core 2.0学习笔记(一):开发运行环境搭建

    期待已久的.net core 2.0终于发布了!大家等的花儿都谢了. 不过比预期提前了一个多月,这在微软历史上还真的不多见.按照历史经验看,2.0版本应该比较靠谱,我猜这也是社区非常火爆的原因吧.下面 ...

  7. Cocos2d-x Lua游戏开发Mac环境搭建以及一点点感悟

    接触Cocos2d-x 最近由于公司项目的需要,自己开始接触Cocos,开始做一些简单的轻量级的游戏,以前没有接触过这一块的东西,也是借助这个机会学习一下游戏的开发,由于以前自己接触的全都是iOS和A ...

  8. net core 2.0学习笔记(一):开发运行环境搭建 (转)

    期待已久的.net core 2.0终于发布了!大家等的花儿都谢了. 不过比预期提前了一个多月,这在微软历史上还真的不多见.按照历史经验看,2.0版本应该比较靠谱,我猜这也是社区非常火爆的原因吧.下面 ...

  9. Cocos 2d-X Lua游戏开发Mac环境搭建以及一点点感悟

    接触Cocos2d-x 最近由于公司项目的需要,自己开始接触Cocos,开始做一些简单的轻量级的游戏,以前没有接触过这一块的东西,也是借助这个机会学习一下游戏的开发,由于以前自己接触的全都是iOS和A ...

随机推荐

  1. linux系统搭建ftp服务器及创建用户使用

    linux 系统下搭建ftp服务器 ftp是什么 FTP是 File Transfer Protocol 文件传输协议的英文名称,用于在Internet上控制文件的双向传输. 同时它也是一个应用程序. ...

  2. 每日一个linux命令6 -- mv

    mv test.log test1.txt 文件改名 mv test1.log test3 文件移动 mv test1.log test2.log test3.log test4 将1,2,3.log ...

  3. C. Three Bags【CF 1467】

    传送门 思路:对于一般情况,我们有三个袋子,容易想到把袋子里物品的价值排序.然后贪心,我们想让最后的价值最大,则三个袋子最后都可以剩余一个物品,这三个物品总和需要最大,最好的情况就是三个物品的符号&q ...

  4. [Skill] git下载助手

    缘由 某些时候需要下载git项目中的某个独立的文件或者文件夹下的内容,克隆全部速度过于慢 搜索下发现有开源的实现,特此记录下 方案 国内不便于fq 源码 服务地址 国外原作者 源码 服务地址 使用方法 ...

  5. 【JavaWeb】JSP 页面

    JSP 页面 简介 JSP(Java Server Pages),即 Java 的服务器页面.它的主要作用是代替 Servlet 程序回传 HTML 页面的数据,因为 Servlet 程序回传 HTM ...

  6. 剑指offer-查找数组中重复的数字

    找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次.请找出数组中任意一个重 ...

  7. 【JS学习】数组过滤方法的使用filter

    前言:本博客系列为学习后盾人js教程过程中的记录与产出,如果对你有帮助,欢迎关注,点赞,分享.不足之处也欢迎指正,作者会积极思考与改正. 使用效果: 可以返回参数函数为真的值 //情景:实现从stu数 ...

  8. python模块/文件/日期时间

    文件操作:

  9. kubernets之从应用访问pod元数据以及其他资源

    一  downwardAPI的应用 1.1  前面我们介绍了如何通过configmap以及secret将配置传入到pod的容器中,但是传递的这些都是预先能够安排和只晓得,对于那些只有当pod创建起来之 ...

  10. SDUST数据结构 - chap2 线性表

    一.判断题: 二.选择题: 三.编程题: 7-1 jmu-ds-顺序表区间元素删除 : 输入样例: 10 5 1 9 10 67 12 8 33 6 2 3 10 输出样例: 1 67 12 33 2 ...