window7下编译php5.3扩展
来源:互联网 发布:淘宝新手如何提高销量 编辑:程序博客网 时间:2024/05/18 18:04
编译作业糸统:WIN7
编译器:VC10
在http://www.visualstudio.com/downloads/download-visual-studio-vs页面选择Microsoft Visual C++ 2010 Express下载
安装后将D:\Microsoft Visual Studio 10.0\VC\bin添加到电脑的环境变量中,这里D:\Microsoft Visual Studio 10.0是我 Microsoft Visual C++ 2010 Express的安装目录。
IDE:Code::Blocks
PHP5.3是用VC9编译的,WIN7下能用的免费编译器,微软官网能下到的最低版本就VC10。我是不会Microsoft Visual C++ 2010 Express编译VC9的工程,所以用Code::Blocks。
下载在http://www.codeblocks.org/downloads/binaries,选择codeblocks-13.12-setup.exe
安装时,程序会检测到Microsoft Visual Studio 10编译器,将其作为默认codeblocks的编译器。
源文件:php-5.3.28-src
我接触的window服务器下跑的PHP,一般都是5.3版本的。
下载在http://windows.php.net/downloads/releases/php-5.3.28-src.zip
下载后解压到某目录下,我这里将其解压到了H:\php-5.3.28-src
二进制文件:php-5.3.28-Win32-VC9-x86
下载在http://windows.php.net/downloads/releases/
下载后解压到H:\php-5.3.28-src,相同的文件选择覆盖即可。
SDK文件:php-sdk-binary-tools-20110915.zip
下载在http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip
下载后解压到某目录下,我这里将其解压到了H:\phpsdk。
将解压后的bin目录添加到系统变量。
步骤:
1:命令行环境下进入H:\php-5.3.28-src
2:在源码目录执行buildconf.bat
3:将生成main/config.win32.h文件
输入cscript /nologo configure.js --with-php-build="../win32build" --without-libxml --disable-odbc
如果报错误,提示缺少dll文件,mspdb100.dll文件可在D:\Microsoft Visual Studio 10.0\Common7\IDE目录下找到,复制到D:\Microsoft Visual Studio 10.0\VC\bin 目录下即可。如果提示没发现某些exe,那时因为H:\phpsdk\bin这个系统变量没起作用,(ps:我添加了这个系统变量没起作用,不知道什么原因)可以在命令行输入:set path=%path%;H:\phpsdk\bin解决这个问题。
也可以简单成这样
configure //线程安全版本
或者
configure --disable-zts //非线程安全版本
以上完事后,到H:\php-5.3.28-src\main下就会看到config.win32.h文件,因为我下的是php-5.3.28-Win32-VC9-x86,这是用VC9编译的,而我现在的编译器是VC10,所以要修改下config.win32.h文件里的编译器定义
找到
/* Detected compiler version */
#define COMPILER "MSVC10 (Visual C++ 2010)"
将其修改为
/* Detected compiler version */
#define COMPILER "MSVC9 (Visual C++ 9.0)"
找到
/* Compiler compatibility ID */
#define PHP_COMPILER_ID "VC10"
将其修改为
/* Compiler compatibility ID */
#define PHP_COMPILER_ID "VC9"
(ps:我不确定这样,Visual C++ 2010就允许降级编译为VC9的格式,不过最终编译的扩展DLL还是能在VC9下的PHP中执行。)
4:进入H:\php-5.3.28-src\ext目录,复制skeleton文件夹并重命名为hello
5:进入H:\php-5.3.28-src\ext\hello目录,将php_skeleton.h、skeleton.c、skeleton.dsp,分别重命名为php_hello.h、hello.c、hello.dsp。
并将这3个文件中的所有'extname'替换为'hello','EXTNAME'替换为‘HELLO’,注意匹配大小写。
6:编辑php_hello.h文件
找到
PHP_FUNCTION(confirm_hello_compiled); /* For testing, remove later. */
紧挨在这行下可以定义一个自己的函数了,这里定义一个test函数
PHP_FUNCTION(test);
7:编辑hello.c文件
找到
PHP_FE(confirm_hello_compiled, NULL) /* For testing, remove later. */
紧挨在这行下添加如下
PHP_FE(test, NULL)
找到
PHP_FUNCTION(confirm_hello_compiled){
此处省略.....
}
在这个函数体后定义自己要定义的函数体
PHP_FUNCTION(test){
此处省略.....
}
8: 将H:\php-5.3.28-src\dev\php5ts.lib(或许是php5.lib,非线程安全版的)拷贝到hello目录下。
9:如果你懂Microsoft Visual C++ 2010 Express工具的用VS2010打开hello.dsp工程,进行工程转换并生成dll文件。
生成的扩展dll文件为:H:\php-5.3.28-src\Release_TS\php_hello.dll。
这里可能会出现问题:fatal error C1902: 程序数据库管理器不匹配;请检查安装解决。
解决办法:找到D:\Microsoft Visual Studio 10.0\Common7\IDE目录下的msobj100.dll、mspdbcore.dll、mspdbsrc.exe
拷贝到D:\\Microsoft Visual Studio 10.0\VC\bin目录下。
我不熟悉Microsoft Visual C++ 2010 Express工具,就用Code::Blocks打开hello.dsp工程,然后编译生成php_hello.dll
10:将php_hello.dll拷贝到要扩展的PHP的\ext目录下,然后修改其php.ini文件,打开PHP扩展选项
添加
extension=php_hello.dll
以上完事就可以在php页面调用php_hello.dll扩展库里的函数test了
参考网址:
http://www.tuicool.com/articles/3AJRZn
http://blog.csdn.net/qian_f/article/details/27205567
0 0
- window7下编译php5.3扩展
- 在window7下编译ffmpeg
- linux下编译php5.3 apache2.3
- Centos6.3下编译安装php5.4.14
- php5.3动态编译gd库 zlib扩展 mcrypt扩展 mysqli扩展
- LINUX下安装PHP5扩展
- Hadoop2.6.0 Window7 X64下编译下载
- windows下wamp安装php5.3扩展memcache
- 在windows系统下用VC6编译最新版PHP5.3.3扩展(以vld为例)
- PHP5不重新编译,手动添加扩展
- CentOS下编译安装PHP5
- fedora 编译php5.3
- PHP5.1下安装json扩展
- win7下php5.5安装solr扩展
- win7下php5.6安装redis扩展
- ubuntu下php5.6安装pcntl扩展
- window下php5.6 mogodb扩展
- windows下 PHP5.5.6 + Imagick扩展
- 【原创】'make menuconfig' requires the ncurses libraries解决办法
- 网络、论坛营销策划之软文营销策划
- ThinkPHP3.1实现中文验证码
- Swift中文教程(五)控制流
- Openfire插件开发者指南
- window7下编译php5.3扩展
- freemarker语法总结
- 在Makefile中转换大小写
- Win7下安装CentOS5.3双系统
- Jsonp原理及实现
- 软文推广对网站权重的作用和意义
- 水题四道
- POJ - 1376 Robot
- weka[1] - ID3算法