- 9
- 0
- 约4.43千字
- 约 7页
- 2017-01-16 发布于北京
- 举报
《用VC6编译PHP扩展
用 VC6 编译自己写的 PHP 扩展
我对 VC 和 C 等都不是很熟悉,下面的过程基本是参考 binzy 写的《扩展你的PHP之入门篇》/articles/410.shtml 和一个老外写的《Developing Custom PHP Extensions》,/2002/0909.html。使用 PHP4 和 VC 6来进行操作演示, PHP5 的情况基本一致。
下载相关文件
下载 php 4.4.4 的源代码,并解压缩到 E:\php\php4
下载 bindlib win32 ( /extra/bindlib_w32.zip ) 并解压缩到 E:\php\php4\bindlib_w32 。
下载 php4ts.lib ,实际上我是在 PHP 4.4.4 的 windows 二进制包中找到这个文件的。我把它放到了 E:\php\php4\php4ts 目录。
在 VC 中新建项目
1. 新建立一个名为 BinzyExtension 的 Win32 Dynamic-Link Library 项目,
注意其中的 Location 是可以改变的,该目录中存放项目文件以及源代码等,后期我把 Location 设置成了 D:\Program\php\php5\ext\[project name] 。
2. 选择” An Empty Dll Project”就建立了项目。
配置编译环境
在菜单 Build - Active Configuration 中选择 Win32 Release 。
在菜单 Project - Setting 如下设置:
其中的 Preprocessor definitions 为:
ZEND_DEBUG=0,COMPILE_DL_BINZY,ZTS=1,ZEND_WIN32,PHP_WIN32,HAVE_BINZY=1
(在参照另外一篇文章中得知,COMPILE_DL_BINZY 中的 BINZY 为模块的名,而最后一个 HAVE_BINZY 并不是必须的参数。)
补充一下:为了在 PHP5 下编译,这里还需要预定义一个常量,WIN32 ,也就是这样:
ZEND_DEBUG=0,COMPILE_DL_BINZY,ZTS=1,ZEND_WIN32,PHP_WIN32,HAVE_BINZY=1,WIN32
Additional include directories 为:
E:\php\php4\,E:\php\php4\main\,E:\php\php4\ext\,E:\php\php4\TSRM\,E:\php\php4\Zend\,E:\php\php4\bindlib_w32\
(上面的 ext 可能可以不要)
接着 Category 选择为 Code Generation,User tun-time library 选择为 Multithreaded DLL 。
其中加上 /Tc 参数,实际上在这个简单例子中也可以不用。因为 PHP 是 C 写的,而不是 C++ 。如果用 C++ 写,会有 namespace 的问题,This will force to compiler to use C naming convention even though it is a C++ source code file.
切换到 Link 页签,如下图中所示,选择 Category 为 Input 以后在相关位置输入 php4ts.lib,以及E:\php\php4\php4ts :
在 Category 中选择 General 中可以定义生成的 dll 的文件路径和名称。
编写相关代码
首先是头文件 Binzy.h
// Binzy Wu
// 2004-4-9
// PHP Extension
#if HAVE_BINZY
extern zend_module_entry binzy_module_entry;
#define binzy_module_ptr binzy_module_entry
PHP_FUNCTION(hellobinzy); //
PHP_MINFO_FUNCTION(binzy); //
#endif
然后是主文件 Binzy.c
// Binzy Wu
// 2004-4-9
// PHP Extension
#include php.h
#include Binzy.h
#if HAVE_BINZY
#if COMPILE_DL_BINZY
ZEND_GET_MODULE(binzy)
#endif
function_entry binzy_func
您可能关注的文档
最近下载
- 陕汽F3000系列车型电器系统介绍.pdf VIP
- 2025年内蒙古自治区中考道德与法治真题试卷含详解.pdf VIP
- 新教材人教版高中数学必修第二册全册教案(教学设计).doc VIP
- 2025年春绩优学案七年级历史下册通用版答案.pdf VIP
- 年产18万吨合成氨一氧化碳变换工段工艺设计.docx VIP
- 检验科心肌酶项目课件.pptx VIP
- 装修工程施工方案简单版(3篇).docx VIP
- 湖北省高考:2025年-2023年《地理》考试真题与参考答案 .pdf VIP
- 【中考真题】2025年湖南省益阳市中考数学试卷(附答案) .pdf VIP
- NBT 20121-2012 核电工程施工组织设计编制规定.pdf VIP
原创力文档

文档评论(0)