VS2012编译php扩展
注意:用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。
VS2012编译php扩展的更多相关文章
- vs2012编译Qwt
主题:vs2012编译Qwt ------------------------------------------------------------------------- 参照网络地址: htt ...
- Memcached 笔记与总结(2)编译 php-memcache 扩展
环境:CentOS 6.6 + Apache 2.2.21 + PHP 5.3.10 php-memcache 是 php 写的 memcached 的客户端,以扩展的形式发布. 对于正在运行的 ph ...
- VS2012 编译 Assimp
VS2012 编译 Assimp 环境: assimp-3.1.1Windows 7 64BitVisual Studio 2012CMake 2.8.12.1 注意: 在Windows中编译assi ...
- 【转】VS2012编译出来的程序,在XP上运行,出现“.exe 不是有效的 win32 应用程序” “not a valid win32 application”
原文网址:http://www.cnblogs.com/Dageking/archive/2013/05/15/3079394.html VS2012编译出来的程序,在XP上运行,出现“.exe 不是 ...
- windows平台使用Microsoft Visual C++ Compiler for Python 2.7编译python扩展
在windows平台上安装python c extension的扩展包是件很痛苦的事情,一般通过安装vc/vs系列来编译C扩展,不过安装包都比较大.或者通过mingw编译,不过有时会在兼容性上出现点问 ...
- VS2012编译Snmp++ v3.2.25
VS2012编译Snmp++ v3.2.25跟用VC6/VC2010等编译方法区别不大. 网上和教程上盛传的方式是把snmp++的cpp源文件和头文件都加到工程里,再编译.我觉得添加所有头文件到工程里 ...
- vs2012编译在win7 32位电脑和win xp电脑上运行的win32程序遇到的问题记录
一.win7 32位电脑: vs2012编译的64位程序是没有问题的.但编译的32位程序在别的电脑(虚拟机模拟)出错: 感觉很无语,vs这么牛逼的东西,在设计时候都不考虑这些吗? 在自己电脑C:\Wi ...
- PHP7 学习笔记(九)phpsize动态编译openssl扩展 (微信公众平台)
先吐槽,微信公众平台授权出问题了,尽然访问不了 一.问题描述: 使用PHP中的库函数file_get_contents时出现Unable to find the wrapper "https ...
- vs2012编译ffmpeg
从官方网站down下来的ffmpeg没有pdb文件不方便调试,为此使用VS2012编译ffmpeg. 编译步骤: 一.安装MinGW,具体的安装方法上一篇文章已经有介绍这里不在赘述. 二.下载文件并放 ...
随机推荐
- 开放式最短路径优先OSPF
1.OSPF基本知识 OSPF作为基于链路状态的协议,解决了RIP在收敛慢,路由环路,可扩展性差等问题,还有以下优点: 采用组播方式发布报文,可以减少对其他不运行ospf路由器的影响 ospf直尺无类 ...
- 利用 canvas 实现压缩图片
/** * nase64Data --> 要压缩的图片base64数据 * width --> 宽度 * height --> 高度 * _callback --> 回调函数 ...
- Bootstrap-轮播图-No.2
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- Java中的集合HashSet、LinkedHashSet、TreeSet和EnumSet(二)
Set接口 前面已经简绍过Set集合,它类似于一个罐子,一旦把对象'丢进'Set集合,集合里多个对象之间没有明显的顺序.Set集合于Collection基本上完全一样,它没有提供任何额外的方法. Se ...
- Luogu P1110 [ZJOI2007]报表统计 multiset
沿用了学长的$multiset$ 然后这道题可以看到我的程序中有两行注释,它在我看来和他们下面的代码没区别,但是我们发现,C++会先调用后面的参数,所以$--it$会被先执行 ... ... ... ...
- MariaDb 严格默认严格模式导致有 NULL 值新增失败 (sql_model STRICT)
分析: 由于 MaridDb 默认工作在严格模式下,所以导致无法 Insert 解决: 1 新增自定义配置 /etc/mysql/mariadb.conf.d/50-disable_strict_mo ...
- 小米oj 有多少个等差数列(动态规划)
有多少个等差数列? 序号:#20难度:困难时间限制:500ms内存限制:10M 描述 等差数列是常见数列的一种,如果一个数列从第二项起,每一项与它的前一项的差等于同一个常数,这个数列就叫做等差数列, ...
- css让文字,字母折行
加上如下的CSS设置,就是设定好宽度width,然后设置合适的word-wrap和word-break属性: ul li{ width: 100px; word-wrap: break-word; w ...
- P4779 【模板】单源最短路径(标准版)题解
原题链接 https://www.luogu.org/problemnew/show/P4779 若还未食用弱化版的同学请先做这个qwq https://www.luogu.org/problemne ...
- VS2008 Qt Designer 中自定义信号槽
一.Qt Designer自定义槽函数 发现:在VS2008 +Qt4.7 中打开ui文件,所用的英文QT Designer工具,没有转到槽函数的功能,不如QtCreator自带的QtDesigne ...