Chinaunix首页 | 论坛 | 博客
  • 博客访问: 59552
  • 博文数量: 17
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 237
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-15 06:01
个人简介

Keep smile !

文章分类

全部博文(17)

文章存档

2016年(10)

2013年(7)

我的朋友

分类: C/C++

2013-07-15 14:17:57

(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) |
给主人留下些什么吧!~~