使用VC6.0生成VLD扩展

使用VC6.0生成VLD扩展

最近想看看PHP生成的源码是啥样子,于是google半天,终于完成。
环境:VC6.0
源码:php5.2.9源码包(可以去http://www.php.net/下载),解压,我的是解压在D盘根目录下。
Vld源码包(可以去http://pecl.php.net/package/vld/0.9.1下载),解压

生成过程如下:
1、在Windows平台启动 VC++ 6.0, 【文件】(File)->【新建】(New), 在 【工程】(Project)中选择 【Win32 Dynamic-Link Library】, 填写上 【工程名称】(Project Name) 和 【位置】(Location),如图1所示:

图1

图1

2、点击确定后,在第二屏选中 【一个空的DLL工程】(An empty DLL project), 点 【完成】Finish, 完成创建。此时会可能会弹出一个信息框,点击确定。

3、把解压后的vld源码中的vld文件夹下面的所有文件拷贝到到工程所在的目录(D:\php-5.2.9\ext\vld);

4、选择左侧的【Source Files】,点击右键,选择【添加文件到目录】,将D:\php-5.2.9\ext\vld目录下的所有C文件添加到此目录,如图2所示;

图2

图2

5、同样选择【Header Files】,添加所有的头文件到目录。如图3所示:

图3

图3

6、修改工程设置,选择【工程】(Project)->【设置】(Settings)->【C/C++】,在【工程选项】(Project Options:)的 最后加上 /Tc,在预处理程序定义中添加如下宏定义:ZEND_DEBUG=0,COMPILE_DL_VLD,ZTS=1,ZEND_WIN32,PHP_WIN32,HAVE_VLD=1

如果你需要编译其它扩展,请将COMPILE_DL_VLD 和 HAVE_VLD=1,后面的 “VLD” 改成和你要创建的工程名一致。

如图4所示:

 

图4

图4

7、选择【连接】(Link),在【对象/库模块】(Object/library modules)添加php5ts.lib,注意要以空格格开;

8、选择【工具】(Tools)->【选项】(Options)->【目录】(Directories),

在 【目录】(Show directories for:) 下拉框中选择 “Library files”,在 【路径】(Directories) 中添加 D:\php-5.2.9 (即 php5ts.lib 所在目录);如图5所示:

在【目录】(Show directories for:) 下拉框中选择 “Include files”

在【路径】(Directories)中添加 D:\PHP-5.2.9 (即 ext、regex、win32 所在目录)

在【路径】(Directories)中添加 D:\PHP-5.2.9\MAIN

在【路径】(Directories)中添加D:\PHP-5.2.9\ZEND

在【路径】(Directories)中添加 D:\PHP-5.2.9\TSRM

如图6所示: 

 

图5

图5

 

 

图6

图6

9、选择【组建】->【编译】,此时可能会出现报错。

php_vld.h文件的59行存在三个莫名其妙的点,将他们去掉就可以了。

10、选择【组建】->【组建】。成功!

在扩展下的Debug目录D:\php-5.2.9\ext\vld\Debug下有一个生成的dll文件。这就是我们所要的东东了!

 

使用VC6.0生成VLD扩展》上有6条评论

  1. Pingback引用通告: VLD扩展使用指南 | PHP源码阅读,PHP设计模式,PHP学习笔记-胖胖的空间

  2. Pingback引用通告: 附录C VLD扩展使用指南 - yhkyoの程序员修炼之道 – yhkyo.com

  3. Pingback引用通告: PHP-VLD扩展使用指南 | A binary lifestyle ∮ zhoujingk-49

  4. Pingback引用通告: PHP源码学习工具:VLD扩展使用介绍 | 编程语言俱乐部博客

nardoo进行回复 取消回复

电子邮件地址不会被公开。 必填项已用*标注


*

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>