碰到了很多问题 ,但最终都解决了,感觉不错。

1)下载 php source, php sdk, 以及 win32ps的源代码

2) 参照下面的连接进行编译。

https://wiki.php.net/internals/windows/stepbystepbuild

注意点:

a) 设置phpsdk_setvars.bat环境变量之前,设置vc 的环境变量。

  "D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x64

b) 文章介绍的目录结构太深了,我这样的结构也是没有问题的。

SDK:D:\tool\php-sdk

php source: D:\proj\php-src

win32ps: D:\proj\pecl\win32ps-1.0.1

c) 加上 "=shared" 就可以编译 extension dll 了(要不就会直接静态连接到php)

configure --disable-all --enable-cli --enable-win32ps=shared

3) 源代码的修改。

a) MAKE_STD_ZVAL 被php7 废除了。 所以,改成类似下面的语句

    // MAKE_STD_ZVAL(tms);
zval tms_instance;
tms = &tms_instance;

b) 运行时,加载extension 会出现 【PHP Startup: Invalid library maybe not a PHP library 】错误

在win32ps.c 加上下面的代码,重新编译

#ifdef HAVE_CONFIG_H
#include "config.h"
#endif #ifdef COMPILE_DL_WIN32PS
ZEND_GET_MODULE(win32ps)
#endif

参考:http://stackoverflow.com/questions/7283949/php-warning-php-startup-invalid-library-maybe-not-a-php-library

以上。

php7 编译 win32ps 模块的更多相关文章

  1. 解决:warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;找到 MSIL .netmodule 或使用 /GL 编译的模块;正在。。;LINK : warning LNK4075: 忽略“/INCREMENTAL”(由于“/LTCG”规范)

    参考资料: http://blog.csdn.net/laogaoav/article/details/8544880 http://stackoverflow.com/questions/18612 ...

  2. android 单独编译某个模块

    第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了.以后如果我们修改了And ...

  3. Android5.0 Gallery2上编译Gallery模块出错

    Android5.0 Gallery2上编译Gallery模块出错 时间:2015-05-05 19:32:57      阅读:105      评论:0      收藏:0      [点我收藏+ ...

  4. Android不编译某个模块

    Android 5.1 源码,编译相关的文件一般在build目录下build/target/product 放了很多mk文件:一般不同的产品会有不同的目录 假设我不想编译OpenWnn,在build目 ...

  5. 新安装和已安装nginx如何添加未编译安装模块/补丁

    新安装和已安装nginx如何添加未编译安装模块/补丁 --http://www.apelearn.com/bbs/forum.php?mod=viewthread&tid=10485& ...

  6. 解决:warning LNK4098: 默认库“MSVCRT”与其他库的使用冲突;找到 MSIL .netmodule 或使用 /GL 编译的模块;正在。。;LINK : warning LNK4075: 忽略“/INCREMENTAL”(由于“/LTCG”规范)

    原文链接地址:https://www.cnblogs.com/qrlozte/p/4844411.html 参考资料: http://blog.csdn.net/laogaoav/article/de ...

  7. php不重新编译添加模块

    php不重新编译添加模块 本文以安装mysqli模块为例 一.检查 1:首先保证php-fpm能正常启动 2:查看当前已安装的php模块是否有mysqli [root@web01 ~]# /appli ...

  8. 安装成功的nginx,如何添加未编译安装模块(非覆盖安装http_image_filter_module)

    背景:1.做了图片上传小项目.2.图片上传,需要多图管理.3.图片上传,需要存储到Fastdfs.4.Fastdfs上的图片,和Nginx结合.5.Nginx从Fastdfs获得的图片,需要使用缩略图 ...

  9. Nginx编译安装模块(非重装)

    假如原已经安装好的Nginx,现在需要添加一个未被编译安装的ssl模块,我们该怎么办呢?重装,还是有其他的办法?当然不需要重装的,下面我们看下如何实现的. 1.cd到Nginx解压过后的目录[root ...

随机推荐

  1. zw版【转发·台湾nvp系列Delphi例程】HALCON HomMat2dRotate2

    zw版[转发·台湾nvp系列Delphi例程]HALCON HomMat2dRotate2 procedure TForm1.Button1Click(Sender: TObject);var op ...

  2. 20154312 曾林 EXP6 信息搜集与漏洞扫描

    目录 1.实验后回答问题 2.实验总结与体会 3.实践过程记录 --3.1.信息收集 ----3.1.1.whois查询 ----3.1.2.nslookup,dig查询 ----3.1.3.trac ...

  3. python webdriver api-操作日期元素的方法

    操作日期元素 第一种方式直接向输入框输入日期 dateInputBox = self.driver.find_element_by_id("datepicker") dateInp ...

  4. IP分片丢失重传

    尽管IP分片看起来是是透明的,但有一点让人不想使用它:即使只丢失一片数据也要重传整个数据报.为什么会发生这种情况呢?     因为IP层本身没有超时重传的机制——由更高层来负责超时和重传(TCP有超时 ...

  5. JavaScript的 基本数据类型---对象

    第一:Javascript对象是 第二:Javascript中 第三:Javascript的对象是数据: 第四:JavaScript 中的对象可以简单理解成"名称:值"对(name ...

  6. angular Js 回车处理

    不说多的,就一个代码: <input type="search" class="am-form-field" placeholder="输入搜索 ...

  7. Python之路----递归函数

    1.小练一下 用map来处理字符串列表,把列表中所有人都变成sb,比方alex_sb name=['alex','wupeiqi','yuanhao','nezha'] # def func(item ...

  8. 计算概论(A)/基础编程练习2(8题)/4:骑车与走路

    #include<stdio.h> int main() { // 待处理的数据数量n ; scanf("%d", &n); float meters[n]; ...

  9. ELK学习笔记之Logstash和Filebeat解析对java异常堆栈下多行日志配置支持

    0x00 概述 logstash官方最新文档.假设有几十台服务器,每台服务器要监控系统日志syslog.tomcat日志.nginx日志.mysql日志等等,监控OOM.内存低下进程被kill.ngi ...

  10. SNMP学习笔记之SNMP4J介绍(Java)

    0x00 SNMP4J介绍 SNMP4J是一个用Java来实现SNMP(简单网络管理协议)协议的开源项目.它支持以命令行的形式进行管理与响应.SNMP4J是纯面向对象设计与SNMP++(用C++实现S ...