上面讲了如何搭建PHP开发环境和创建一个PHP扩展骨架。这里讲如何使用vs2008ide来开发我们的PHP扩展。具体如下:
1.启动vs2008
2.创建项目
文件-新建-从现有代码创建项目。
选择visual-c++,
找到项目位置F:\php_win\php-5.3.8\ext\test
项目名称php_test,
项目类型:选择“动态链接库dll项目”。
完成即可。
3.配置相关参数
菜单-项目-属性,打开php_test属性页对话框,
在“配置属性"- "C/C++"
“常规”:附加包含目录:
C:\vc\vc2008compiler\PlatformSDK\Include
C:\vc\vc2008compiler\include
F:\php_win\win32build\include
F:\php_win\win32build
F:\php_win\php-5.3.8
F:\php_win\php-5.3.8\win32
F:\php_win\php-5.3.8\main
F:\php_win\php-5.3.8\TSRM
F:\php_win\php-5.3.8\Zend
“预处理器”:预处理器定义
WIN32
_DEBUG
_WINDOWS
_USRDLL
PHP_TEST_EXPORTS
ZEND_DEBUG=0
COMPILE_DL_TEST
ZTS
ZEND_WIN32
PHP_WIN32
HAVE_TEST=1
在“配置属性"- "链接器"中
“输入”:附加依赖项中添加
F:\php_win\php-5.3.8-nts-Win32-VC9-x86\dev\php5.lib
C:\vc\vc2008compiler\PlatformSDK\Lib\Kernel32.Lib
C:\vc\vc2008compiler\lib\msvcrtd.lib
要根据扩展名称而定,记得要大写。
这里要去掉:“从父级或项目默认设置继承”的勾选
5.生成DLL
右击php_test项目,选择“生成”
,然后控制打印如下的类似,表示成功,如果有错误,可以自己根据问题进行处理
1>------ 已启动全部重新生成: 项目: php_test, 配置: Debug Win32 ------ 1>正在删除项目“php_test”(配置“Debug|Win32”)的中间文件和输出文件 1>正在编译... 1>cl: 命令行 warning D9035 :“Wp64”选项已否决,并将在将来的版本中移除 1>test.c 1>f:\php_win\php-5.3.8\zend\zend_execute.h(70) : warning C4311: “类型转换”: 从“gc_root_buffer *”到“zend_uintptr_t”的指针截断 1>f:\php_win\php-5.3.8\zend\zend_execute.h(70) : warning C4312: “类型转换”: 从“zend_uintptr_t”转换到更大的“gc_root_buffer *” 1>f:\php_win\php-5.3.8\zend\zend_execute.h(230) : warning C4311: “类型转换”: 从“void **”到“zend_uintptr_t”的指针截断 1>f:\php_win\php-5.3.8\zend\zend_execute.h(234) : warning C4267: “函数”: 从“size_t”转换到“int”,可能丢失数据 1>f:\php_win\php-5.3.8\zend\zend_execute.h(291) : warning C4312: “类型转换”: 从“zend_uintptr_t”转换到更大的“void *” 1>f:\php_win\php-5.3.8\zend\zend_execute.h(306) : warning C4312: “类型转换”: 从“zend_uintptr_t”转换到更大的“void *” 1>f:\php_win\php-5.3.8\zend\zend_execute.h(313) : warning C4311: “类型转换”: 从“void *”到“zend_uintptr_t”的指针截断 1>f:\php_win\php-5.3.8\zend\zend_execute.h(326) : warning C4311: “类型转换”: 从“void *”到“zend_uintptr_t”的指针截断 1>正在编译资源清单... 1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>正在链接... 1> 正在创建库 Debug\php_test.lib 和对象 Debug\php_test.exp 1>正在嵌入清单... 1>Microsoft (R) Windows (R) Resource Compiler Version 6.0.5724.0 1>Copyright (C) Microsoft Corporation. All rights reserved. 1>生成日志保存在“file://f:\php_win\php-5.3.8\ext\test\Debug\BuildLog.htm” 1>php_test - 0 个错误,8 个警告 ========== 全部重新生成: 成功 1 个,失败 0 个,跳过 0 个 ==========
F:\php_win\php-5.3.8\ext\test\Debug
目录生成了
php_test.dll
php扩展文件,在大功告成之前,先确保这个扩展是可以用的,接下来部署这个扩展,看看是否正常。
6.部署测试PHP扩展模块
放到你的phpapache中加载这个扩展,然后运行F:\php_win\php-5.3.8\ext\test\给出的test.php
如果php环境启动没有报错误,说明我们开发的模块是可以用的php正确php模块。
如果有错误你可以自己找找问题原因,然后逐一解决。
下一篇文章会说说这些可能遇到的问题,当然并不是全部的问题。