windows下开发PHP扩展(无需Cygwin)
时间:2009-04-17
来源:互联网
声明:新手入门,高手飘过(指点一二更好^^)~
windows下开发php扩展网上很多资料都说需要Cygwin,其实完全可以不必安装该东东。没错,是可以在linux下生成骨架后拷到windos下来用,但是,如果没有linux环境呢?什么,装虚拟机?我晕,你咋又绕回去了- -! 除了编译外,shell环境主要就是为了生成扩展的骨架,其实骨架已经在php源码包中了了,我们只需要把相关名字替换一下即可使用。
准备:
1、php源码包和windows下的二进制包,以及安装Visual C++,并把Microsoft Visual Studio\Common\MSDev98\Bin的绝对路径添加到windows环境变量
2、解压源码包到d:\php_src
3、进入d:\php_src\ext目录,复制skeleton文件夹,并重命名为要开发扩展的名字,本例为“linvo”
4、把二进制包中dev目录下的php5ts.lib文件,拷入新建的linvo目录
5、编辑linvo目录中的php_skeleton.h、skeleton.c、skeleton.dsp这三个文件,替换内容中所有extname为linvo,EXTNAME为LINVO。(严格区分大小写)
编码:
6、编辑php_skeleton.h文件(头文件)
在PHP_FUNCTION(confirm_linvo_compiled);下面编写
PHP_FUNCTION(hello);
声明一个hello函数
7、编辑skeleton.c文件(主文件)
在PHP_FE(confirm_linvo_compiled, NULL) 下面编写
PHP_FE(hello, NULL)
这是函数入口,下面该写函数主体了
找到PHP_FUNCTION(confirm_test_compiled)函数,该函数是测试函数,在该函数后面新写一个函数
[code]
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);
}
[/code]
编译:
8、运行cmd命令行,进入d:\php_src\ext\linvo目录
9、输入 msdev linvo.dsp /MAKE "linvo - Win32 Release_TS"
10、如果没有错误,则在php_src目录下会生成一个Release_TS文件夹,里面就是编译好的php_linvo.dll扩展
使用:
11、将其拷入运行环境中的php扩展目录ext
12、编辑php.ini添加extension=php_linvo.dll,重启apache
13、在php文件中执行如下语句
echo hello('Linvo');
将输出
Hello,Linvo
14、通过echo phpinfo();也可看到扩展已加载的信息
作者: linvo 发布时间: 2009-04-17
是不是要重新做一个dll 文件来把它引入???
作者: chnzbq 发布时间: 2009-04-18
作者: chnzbq 发布时间: 2009-04-18
作者: liexusong 发布时间: 2009-04-18
liexusong 发表于 2009-4-18 14:43
1、声明:新手入门,高手飘过(指点一二更好^^)~
2、windows下开发php扩展网上很多资料都说需要Cygwin
作者: linvo 发布时间: 2009-04-18
chnzbq 发表于 2009-4-18 14:20
作者: linvo 发布时间: 2009-04-18

作者: lxylxy888666 发布时间: 2009-04-20

lxylxy888666 发表于 2009-4-20 09:56
好处很多,也很明显
1、限于PHP语言本身的抽象程度,它不能直接访问某些库或特定于操作系统的调用。
2、你有一些现成的PHP代码,但是你知道它可以(运行)更快、(占用空间)更小,而且消耗更少的内存。
这两点足矣
作者: linvo 发布时间: 2009-04-20
作者: fu1616 发布时间: 2009-04-20
作者: XLEdoo 发布时间: 2009-04-28
XLEdoo 发表于 2009-4-28 19:51
但是要把程序逻辑由php代码改成c语言来实现:)
作者: linvo 发布时间: 2009-04-29
我要学习一下!
作者: aries 发布时间: 2009-04-30
但是要把程序逻辑由php代码改成c语言来实现:)
linvo 发表于 2009-4-29 16:34
作者: XLEdoo 发布时间: 2009-05-02
XLEdoo 发表于 2009-5-2 13:55
作者: linvo 发布时间: 2009-05-04
补充一下`新手最好先不要学这个。基础才是王道
作者: 哈出出 发布时间: 2009-05-04
补充一下`新手最好先不要学这个。基础才是王道
哈出出 发表于 2009-5-4 10:07
但是,跑php的服务器有几个是win的呢?
作者: linvo 发布时间: 2009-05-05
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28