注意:用VS2015来做会比较好!

开发前准备工作:
cygwin
visual studio 2012
php编译后的程序
      使用的是 xampp集成安装包,所以编译后的程序路径为D:\xampp\php
php编译前的源码
      使用的是 php-5.6.14-src,路径为D:\Hacfin\Code\PHP\php_sdk_win\php-5.6.14-src

1、修改 “ext_skel_win32.php”文件
      D:\Hacfin\Code\PHP\php_sdk_win\php-5.6.14-src\ext\ext_skel_win32.php,修改cygwin路径。
$cygwin_path = 'c:\cygwin64\bin'; 把$cygwin_path修改为你实际安装cygwin的路径。

2、生成PHP扩展开发框架
      在源代码ext目录也就是D:\Hacfin\Code\PHP\php_sdk_win\php-5.6.14-src\ext下,运行cmd。执行php ext_skel_win32.php --extname=<EXT_NAME>,此时会在ext目录下生成<EXT_NAME>目录,这个目录就是进行PHP扩展开发的框架。比如你运行php.exe ext_skel_win32.php --extname=twig,会在ext目录下生成twig目录,这里的twig代表你的php扩展名。

3、拷贝衔接库
      将D:\xampp\php\dev\php5ts.lib拷贝至 “ext/<EXT_NAME>”中。比如你要开发的PHP扩展名为twig,那么就需要把php5ts.lib拷贝到PHP源文件目录\ext\twig中。 
注:如果php5ts.lib(如果是非线程安全版本那么名字是php5.lib)是64位的,那么VS2012的解决方案平台要设置为X64,不能设为win32。平台解决方案要和php核心库的位数保持一致。否则会出错、

4、添加“config.w32.h”文件
      在php源代码文件目录里搜索“config.w32.h”,在D:\Hacfin\Code\PHP\php_sdk_win\php-5.6.14-src\win32\build文件夹里找到“config.w32.h.in”,将这个文件复制到E:\php-5.6.9-src\main文件夹里,去掉后面的“.in”。

注意:为了让扩展能和php运行环境严格匹配,要根据你的php运行环境的编译版本(php5.6.14是VC11编译的),在config.w32.h文件里加上:

#define PHP_COMPILER_ID "VC11" 

5、取消预定义宏“LIBZEND_EXPORTS”(否则不可引入zend函数)
进入<EXT_NAME>目录,打开<EXT_NAME>.dsp。  

最新文章

  1. Sikuli图形脚本测试工具安装及介绍(适合小白的测试神器)
  2. SET-UID程序漏洞实验
  3. Java - IDE
  4. [已解决] java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.com.yourproject.test_jsp
  5. CLGeocoder Error Domain=kCLErrorDomain Code=2
  6. HDU 5800 (DP)
  7. Spark RDD概念学习系列之RDD的5大特点(五)
  8. iOS application: how to clear notifications?
  9. codechef Turbo Sort 题解
  10. [Swust OJ 1125]--又见GCD(数论,素数表存贮因子)
  11. Python简单小程序练习
  12. 5G网络与4G相比,有什么区别?
  13. Snakes 的 Na&#239;ve Graph
  14. myeclipse2017 安装包及破解插件的下载
  15. Py之zip方法【转载】
  16. winform执行程序报错:已停止工作,windows正在检查该问题的解决方案
  17. .Net Actor 服务端开发框架,Newbe.Claptrap 项目周报 1 - 还没轮影,先用轮跑
  18. 2个版本并存的python使用新的版本安装django的方法
  19. vue简单介绍
  20. 设计模式之Singleton模式

热门文章

  1. ubuntu 中 搭建 C编程环境
  2. 《Redis 设计与实现》读书笔记(二)
  3. C# ado.net 操作存储过程(二)
  4. Python基础--基于ubuntu linux基础知识点
  5. end()
  6. 无法识别的配置节点 applicationSettings/* Properties.Settings 解决方法
  7. git lfs setpu(4)
  8. [Luogu] 飞扬的小鸟
  9. Solr6.0环境搭建
  10. leetcode题目234.回文链表(快慢指针+辅助空间-简单)