windows系统下c++扩展PHP开发流程

来源:互联网 发布:博彦科技面试题java 编辑:程序博客网 时间:2024/06/07 06:04

一、必备软件

1PHPWindows版本二进制压缩包

说明:由于我是C++程序员,没搞过PHP。不知道PHP网站如何搭建,所以就找了一个XAMPP软件。它集成了phpMysql等工具,直接安装就可以啦。

xampp1.8.2下载地址:(此版本含有的PHP5.4.19的)

http://yunpan.cn/QhFIbRCdMjpq9(提取码:261f

2PHP源代码

说明:直接解压这个压缩包就可以啦。

5.4.19版本下载地址:http://download.csdn.net/detail/th_gsb/7560551

3cygwin

说明:用于模拟UNIX环境的工具

下载地址:https://cygwin.com/setup-x86.exe

4Visual studio 2010

说明:其实就是安装一个VC开发环境,哪个版本都可以。

下载地址:http://www.pc6.com/softview/SoftView_51068.html

 

二、执行流程

1)安装cygwinC盘(你的盘符你做主)

2)安装xamppD盘(你是地主)

3)安装xampp成功后,运行xamppcontrol panel,启动apache。如果启动失败,请执行步骤4,否则跳过直接执行步骤5

4)点击界面右上角的“config”按钮,在弹出的对话框中点击“serviceand port settings”按钮。修改“mainport”8080,和“sslport”444。端口号与你本机的环境有关,如果端口被其他软件所占用,那就继续修改。

5)解压PHP源代码到F盘。解压后,你会在F:\php-5.4.19\ext目录看到ext_skel文件。

6)启动cygwin,在类似dos界面中输入“mount”命令,查看一下你的F盘在类似UNIX系统下显示的字符串。

7)输入“cd /cygdrive/f/php-5.4.19/ext”,进入此盘符

8)再输入“./ext_skel --extname=hello”,让它编译出c++所需要的文件。其中hello是我测试用的名字,你随便修改。

执行后你会在ext目录看到一个hello名字的目录。里面有头文件和C源文件,缺少VC的工程文件,还得继续啊。

9)为系统添加环境变量,在PATHEXT中添加“.php”

10)修改F:\php-5.4.19\ext目录下的ext_skel_win32.php为你所用。保存一个新文件名字叫“ext_skel.php”内容如下:

 

<?php

$extname='hello'; //同上这里指定你的模块名

$extpath='f:/php-5.4.19/ext';

$skel = "skeleton";

foreach($argv as $arg) {

    if(strtolower(substr($arg, 0, 9)) == "--extname") {

        $extname= substr($arg, 10);

    }

    if(strtolower(substr($arg, 0, 6)) == "--skel") {

        $skel= substr($arg, 7);

    }

}

$fp = fopen("$extpath/$skel/skeleton.dsp","rb");

if ($fp) {

    $dsp_file =fread($fp, filesize("$extpath/$skel/skeleton.dsp"));

    fclose($fp);

    $dsp_file =str_replace("extname", $extname, $dsp_file);

    $dsp_file =str_replace("EXTNAME", strtoupper($extname), $dsp_file);

    $fp =fopen("$extpath/$extname/$extname.dsp", "wb");

    if ($fp) {

        fwrite($fp,$dsp_file);

        fclose($fp);

    }

}

$fp =fopen("$extpath/$extname/$extname.php", "rb");

if ($fp) {

    $php_file =fread($fp, filesize("$extpath/$extname/$extname.php"));

    fclose($fp);

    $php_file =str_replace("dl('", "dl('php_", $php_file);

    $fp =fopen("$extpath/$extname/$extname.php", "wb");

    if ($fp) {

        fwrite($fp,$php_file);

        fclose($fp);

    }

}

?>

11)打开windows附件中的命令提示符,然后在界面上输入“cd /d D:\XAMPP\php”,进入php二进制程序目录。

12)再输入“php.exef:\php-5.4.19\ext\ext_skel.php”,让它执行我们的PHP文件。执行后,你会在F:\php-5.4.19\ext\hello目录下看到hello.dsp文件。

13)安装Visual studio 2010,主要安装的是里面的VC开发工具。安装之后,打开hello.dsp文件。系统会提示转换,点击转换。

14)设置工程属性页中的C++->代码生成->运行库改为多线程DLL(/MD),将C++->高级->编译为改为编译为C代码(/TC),链接器->附加库目录加一项PHP二进制包的dev目录,即D:\xampp\php\dev。点生成->配置管理器->活动解决方案配置先Release_TS,平台为win32。然后编译,如果出现无法找到“../main/config.w32.h”的错误,请执行步骤15,否则跳过执行步骤16

15)解决错误的方法请参考张松不拖延所写的文章http://blog.sina.com.cn/s/blog_7336020f0100qdmd.html。如果还没解决,请下载我编译好的文件,下载地址:http://download.csdn.net/detail/th_gsb/7561317

16)编译好之后,会在F:\php-5.4.19\Release_TS目录下生成“php_hello.dll”文件。将其拷贝到D:\xampp\php\ext目录下。

17)修改D:\xampp\php目录下的php.ini文件,加上“extension=php_hello.dll”,重启apache,在phpinfo中就可以看到hello的存在了。

 

搞定!耗费一天的时间,参考了不少文章,就TMD没一个人写完整的,还得自己动手丰衣足食。

 

参考资料:

1.            PHP扩展中包装C++

2.            [原创] [原创]win32下用VC扩展PHP全过程

3.            尝试在Win32Win 7)下用VS2010编译PHP扩展(初步)

4.            编译生成c动态连接库,遇到生成config.w32.h不存在的解决办法:重新编译生成!

0 0
原创粉丝点击