Windows 下开发PHP扩展DLL
2016-08-28 17:39
393 查看
一、开始之前
1. 系统环境:Windows 7
2. 开发工具:Microsoft Visual Studio 2010
3. AP环境:即已经存在的Apache2.2x(VC9)、PHP5.3x(VC9)环境。
4. PHP源码:下载稳定版本源码,解压到如:C:Program Filesphpsrc 下。本示例用的是PHP5.3.8。
5. 配置源码:将源码中src/win32/build/config.w32.h.in文件拷贝一份到src/main/下,并重命名为:config.w32.h。
二、创建项目
启动Microsoft Visual Studio 2010(我用的是Professional版),新建一个项目,如:php_screw,类型选择如下图:
新建项目第一步
![](http://www.zhaoyuanma.com/upload/20140926153953657.png)
新建项目第二步
![](http://www.zhaoyuanma.com/upload/20140926153955831.png)
点击“finish”,即可看到在IDE右边多出了Solution Explorer和包含的默认项目文件结构。如下图:
默认项目文件结构
![](http://www.zhaoyuanma.com/upload/20140926153956293.png)
三、新建程序文件并设置项目属性
1. 在Source Files下创建一个cpp文件。
![](http://www.zhaoyuanma.com/upload/20140926153957467.png)
2. 选中项目名称,点右键,选择“Properties”打开属性设置对话框,进行属性设计,如下图:
打开属性对话框
![](http://www.zhaoyuanma.com/upload/20140926153957248.png)
设置Additional Include Directories
![](http://www.zhaoyuanma.com/upload/20140926153958557.png)
设置 Preprocessor Definitions
![](http://www.zhaoyuanma.com/upload/20140926153959482.png)
设置Additional Library Directories
![](http://www.zhaoyuanma.com/upload/20140926154000240.png)
设置 Additional Dependencies
![](http://www.zhaoyuanma.com/upload/20140926154001586.png)
四、编写示例代码并Build项目
1. 编写如下示例代码:
2. Build项目
保存好代码后,选择Build->Build Solution,一切正常的话,在下方图示的Output中可看到输出的信息,如图:
![](http://www.zhaoyuanma.com/upload/20140926154002531.png)
五、应用扩展
在项目的Debug文件夹下将生成的dll文件,拷贝到可正常工作的PHP ext文件夹下,并在php.ini上配置支持,重启Apache,在phpinfo中便可看到类似下图的信息:
![](http://www.zhaoyuanma.com/upload/20140926154004726.png)
编写PHP代码调用:
完。
1. 系统环境:Windows 7
2. 开发工具:Microsoft Visual Studio 2010
3. AP环境:即已经存在的Apache2.2x(VC9)、PHP5.3x(VC9)环境。
4. PHP源码:下载稳定版本源码,解压到如:C:Program Filesphpsrc 下。本示例用的是PHP5.3.8。
5. 配置源码:将源码中src/win32/build/config.w32.h.in文件拷贝一份到src/main/下,并重命名为:config.w32.h。
二、创建项目
启动Microsoft Visual Studio 2010(我用的是Professional版),新建一个项目,如:php_screw,类型选择如下图:
新建项目第一步
![](http://www.zhaoyuanma.com/upload/20140926153953657.png)
新建项目第二步
![](http://www.zhaoyuanma.com/upload/20140926153955831.png)
点击“finish”,即可看到在IDE右边多出了Solution Explorer和包含的默认项目文件结构。如下图:
默认项目文件结构
![](http://www.zhaoyuanma.com/upload/20140926153956293.png)
三、新建程序文件并设置项目属性
1. 在Source Files下创建一个cpp文件。
![](http://www.zhaoyuanma.com/upload/20140926153957467.png)
2. 选中项目名称,点右键,选择“Properties”打开属性设置对话框,进行属性设计,如下图:
打开属性对话框
![](http://www.zhaoyuanma.com/upload/20140926153957248.png)
设置Additional Include Directories
![](http://www.zhaoyuanma.com/upload/20140926153958557.png)
设置 Preprocessor Definitions
![](http://www.zhaoyuanma.com/upload/20140926153959482.png)
设置Additional Library Directories
![](http://www.zhaoyuanma.com/upload/20140926154000240.png)
设置 Additional Dependencies
![](http://www.zhaoyuanma.com/upload/20140926154001586.png)
四、编写示例代码并Build项目
1. 编写如下示例代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | /** * 示例代码 **/ #define PHP_COMPILER_ID "VC9" #include "php.h" #include "ext/standard/info.h" ZEND_FUNCTION(example); PHP_MINFO_FUNCTION(example); zend_function_entry use_functions[] = { ZEND_FE(example, NULL) {NULL, NULL, NULL} }; zend_module_entry example_module_entry = { STANDARD_MODULE_HEADER, "PHP Extension Example", use_functions, NULL, NULL, NULL, NULL, PHP_MINFO(example), "1.0 beta", STANDARD_MODULE_PROPERTIES }; ZEND_GET_MODULE(example); ZEND_FUNCTION(example) { bool param; if(zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "|b", ¶m) == FAILURE) { E_ERROR; return; } if(param) { php_printf("Example parm is true"); } else { php_printf("Example parm is false"); } return; } PHP_MINFO_FUNCTION(example) { php_info_print_table_start(); php_info_print_table_header(2, "PHP Extension Example support", "enabled"); php_info_print_table_row(2, "Version", "1.0 beta"); php_info_print_table_end(); } |
保存好代码后,选择Build->Build Solution,一切正常的话,在下方图示的Output中可看到输出的信息,如图:
![](http://www.zhaoyuanma.com/upload/20140926154002531.png)
五、应用扩展
在项目的Debug文件夹下将生成的dll文件,拷贝到可正常工作的PHP ext文件夹下,并在php.ini上配置支持,重启Apache,在phpinfo中便可看到类似下图的信息:
![](http://www.zhaoyuanma.com/upload/20140926154004726.png)
编写PHP代码调用:
1 2 3 4 5 6 | echo example(true); //输出: Example parm is true ?> |
相关文章推荐
- windows下开发PHP扩展dll(无需Cygwin)
- windows下开发PHP扩展dll(无需Cygwin)
- windows下开发PHP扩展dll(无需Cygwin)
- windows下开发PHP扩展dll(无需Cygwin)
- Windows下php扩展库C++开发
- Windows 下开发PHP扩展资源
- 在vs2008开发PHP扩展之二--vs2008下PHP扩展项目的建立配置以及生成dll
- 【转】libmemcached在windows下的PHP扩展(php_memcached.dll下载)
- 在Windows环境下进行PHP扩展的开发
- windows下开发php扩展的方法
- Windows 下开发PHP扩展资源
- 在 windows 下 用C++ 开发 PHP 扩展
- windows下开发并编译PHP扩展的方法
- windows下用vc开发php扩展
- 用C++在Windows上开发SNMP扩展代理(SNMP extension agent) DLL
- windows下开发PHP扩展(无需Cygwin)
- PHP Windows 扩展的开发(2) 参数
- 在 windows 下 用C++ 开发 PHP 扩展
- PHP Windows 扩展的开发(1)
- 在Windows上开发PHP扩展模块