(cfang 转载并做适当注释)
第一步:
安装cygwin,务必cygwin\bin文件夹有bison.exe、flex.exe (http://blog.chinaunix.net/uid-20545494-id-1929752.html)
c:\cygwin\bin
把以上加入到环境变量中
首次安装时,可选择默认安装
我安装了以下这些包,可能有的多余了,作个参考:
安装时请一定要选择 bison.exe 和 flex.exe
安装Visual C++6.0,安装VC6 Service Pack 6
参考:
确认环境变量:C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
第二步:
官方网站下载php5.3.3源码,与VC6编译的用于windows下的二进制文件
源码:c:\php-5.3.3
二进制文件:c:\php5
把c:\php5加入到环境变量中
第三步:
命令行下:cd php-5.3.3
进入源码根目录
执行:buildconf
如果在这出什么问题,很有可能是cygwin安装不完整
那就继续安装cygwin吧
第四步:
执行:configure
这个命令执行中可以生成C:\php-5.3.3\main文件夹下的config.w32.h头文件
这个头文件在扩展目录编译时会用到
其中三、四两步只需执行一次,以后再建扩展可以不执行了,直接从第五步开始就可以了
第五步:
可以生成扩展目录了
进入到:C:\php-5.3.3\ext文件夹下
执行:php ext_skel_win32.php --extname=myhello
执行这个命令时,确保ext_skel_win32.php中变量$cygwin_path 所指定的目录
默认是:c:\cygwin\bin,所以我的就不需要修改了
第六步:
把C:\php5\dev文件夹下的php5ts.lib拷贝到新生成的扩展目录下:C:\php-5.3.3\ext\myhello
修改php_myhello.h
扩展的新函数: 在PHP_FUNCTION(confirm_myhello_compiled); 行后添加一行
PHP_FUNCTION(confirm_myhello_compiled);
PHP_FUNCTION(myhello); // 新增的行 申明函数
修改myhello.c
在PHP_FUNCTION(confirm_myhello_compiled) 后添加我们的新函数my
//myhello 函数体
PHP_FUNCTION(myhello){
php_printf("C extension");
}
在数组zend_function_entry myhello_functions[]增加一行
zend_function_entry myhello_functions[] = {
PHP_FE(confirm_myhello_compiled, NULL)
PHP_FE(myhello, NULL) // 新增的行 注册myhello函数
{NULL, NULL, NULL}
};
第七步:
用vc6打开myhello.dsp,build->Set Active Configuration,选择release编译
然后build->php_myhello.dll
这个时候会报很多php_stream_transport.h文件的错误
接着比较重要的一步,很多时候就是差这一步了
在这个文件大约28行位置加上这一句:typedef int socklen_t;(只需在第一次扩展时加上就可以了)
接着build->php_myhello.dll
然后是不是成功了?
第八步:
在 C:\php-5.3.3\Release_TS 文件夹下生成了php_myhello.dll
把php_myhello.dll拷贝到二进制环境目录下: C:\php5\ext
在php.ini文件里加上这么一句话:extension=php_myhello.dll
第九步:
写一个test.php文件:
重启web server,就可以在浏览器里看到:hello C extension.
成功了!
阅读(1467) | 评论(0) | 转发(0) |