windows下编译php7图形库php_ui.dll
CSDN博客
具有图形化编程才有意思,这几天看到了php ui 图形扩展,只是现在只能下载php 7.1的 本次教程编译php7.2.6的 php ui
要是linux下编译起来比较简单 但是 windows下就麻烦些
参考文章: http://blog.51cto.com/lancelot/2054953 windows下编译php7扩展memcache
php7.2.6的编译(windows环境)有几个重要的不同.
1.php7.2采用 vc15(vs2017)编译
2.php7的sdk php-sdk
3.编译环境搭建更加简单一些了.
具体环境搭建
安装vc15编译器
vs2017把编译器 和 ide 分开了,因为我们只需要编译器所以就不安装vs2017了(直接安装vs2017 免费版也可以)
注意win下单独下载cmake 并配置到系统环境中
点击 下载地址 到下载页面 在下面找到 "Visual Studio 2017 生成工具" 下载 安装就可以了
注意选择 vc相关的程序 下面是安装的截图

下载 php-sdk 解压
https://github.com/Microsoft/php-sdk-binary-tools
解压到 d:\php_sdk\ (假设我们准备使用 d:\php_sdk\ 作为编译目录)
这时 d:\php_sdk\ 下面应该有

在 J:\compiler\php\sdk\binary-tools 运行phpsdk-vc15-x86.bat
在 php_sdk 目录 按住 shift 键 右键 点击 "在此处打开命令行窗口"
在命令行窗口运行 "phpsdk-vc15-x86.bat"
注释: 如果想编译 64位版本就运行 x64,
结果如下图(phpsdk目录不太一样)

运行 phpsdk_buildtree phpdev
这时候 J:\compiler\php\sdk\下面应该会有一个 phpdev 目录
解压到任意目录
- mkdir build && cd build
- cmake -G"NMake Makefiles" NDEBUG ..
mkdir build && cd build
cmake -G"NMake Makefiles" NDEBUG ..
- 打开
- CMakeFiles\libui.dir\build.make:1298
- resources.rc.* 改成 resources.rc.res
打开
CMakeFiles\libui.dir\build.make:1298
resources.rc.* 改成 resources.rc.res
cmake --build .
- libui-alpha3.5\build\out
- out\libui.lib 和 out\libui.res 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\lib
- libui-alpha3.5
- ui.h 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\include
- ui_darwin.h 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\include
- ui_unix.h 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\include
- ui_windows.h 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\include
libui-alpha3.5\build\out
out\libui.lib 和 out\libui.res 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\lib
libui-alpha3.5
ui.h 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\include
ui_darwin.h 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\include
ui_unix.h 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\include
ui_windows.h 复制到 J:\compiler\php\sdk\phpdev\vc15\x64\phpdev\vc15\x64\deps\include
下载 pthreads-w32-2-9-1-release 点击到下载页面
- pthreadVC2.lib 复制到 J:\compiler\php\sdk\phpdev\phpdev\vc15\x64\deps\lib
pthreadVC2.lib 复制到 J:\compiler\php\sdk\phpdev\phpdev\vc15\x64\deps\lib
打开 pthread.h 开头增加预处理 内容如下
- #define HAVE_STRUCT_TIMESPEC
- #define _TIMESPEC_DEFINED
#define HAVE_STRUCT_TIMESPEC
#define _TIMESPEC_DEFINED
将这个文件复制到
- J:\compiler\php\sdk\phpdev\phpdev\vc15\x64\deps\include
J:\compiler\php\sdk\phpdev\phpdev\vc15\x64\deps\include
下载 php ui
如果有当前使用版本可直接下载
http://pecl.php.net/package/ui
手册
解压到php ext目录中并重命名为ui
进入 php-src 目录,执行
命令行 "cd /d J:\compiler\php\sdk\phpdev\vc15\x64\php-7.2.6" 进入 php 源码目录
命令行"phpsdk_deps --update --branch master" php会自动下载 需要的依赖包(以前需要手动下载php-dsp文件)
看到 successfully 字样 说明下载完成
执行 "buildconf"
命令行 执行 "buildconf"
如果提示 没有文件扩展“.js”的脚本引擎
可下载文件 运行解决 点击跳转
重新执行 buildconf
结果如下 说明运行完毕
- $ buildconf
- Rebuilding configure.js
- Now run 'configure --help'
编译php
- configure --disable-all --enable-cli --enable-fd-setsize=2048 --enable-sanitizer --with-ui=shared --with-curl=shared --disable-cgi
configure --disable-all --enable-cli --enable-fd-setsize=2048 --enable-sanitizer --with-ui=shared --with-curl=shared --disable-cgi
- 扩展
- --disable-zts
- --disable-cgi 编译出 windows 版本和 php-cgi.exe
- --disable-zts nts 非线程安全
- --enable-shmop=shared 以dll 方式编译 php shmop 扩展
扩展
--disable-zts
--disable-cgi 编译出 windows 版本和 php-cgi.exe
--disable-zts nts 非线程安全
--enable-shmop=shared 以dll 方式编译 php shmop 扩展
- Makefile 如果链接提示库不存在 可修改makefile 修改如下
- LIBS=kernel32.lib ole32.lib user32.lib advapi32.lib shell32.lib ws2_32.lib Dnsapi.lib psapi.lib bcrypt.lib comdlg32.lib Gdi32.lib comctl32.lib version.lib d2d1.lib dwrite.lib windowscodecs.lib dxgi.lib d3d12.lib ScrnSave.Lib USP10.Lib UxTheme.lib
Makefile 如果链接提示库不存在 可修改makefile 修改如下
LIBS=kernel32.lib ole32.lib user32.lib advapi32.lib shell32.lib ws2_32.lib Dnsapi.lib psapi.lib bcrypt.lib comdlg32.lib Gdi32.lib comctl32.lib version.lib d2d1.lib dwrite.lib windowscodecs.lib dxgi.lib d3d12.lib ScrnSave.Lib USP10.Lib UxTheme.lib
然后执行"nmake" 开始编译
等待数分钟(或者数10分钟)后,在php-源码目录应该能够找到 Release_TS 目录看见 php-ui了
最后 pthreadVC2.dll 和 libui.dll 复制到php 根目录
php-ui.dll 复制到 php ext目录
php ini 新增
extension=ui
ok下面是运行截图

下面是编译好了的
windows下编译php7图形库php_ui.dll的更多相关文章
- Windows下尝试PHP7提示丢失VCRUNTIME140.DLL的问题解决
前天PHP7.0.0正式版发布了,有一些比较好的改进,官方也说速度比php5.6快了两倍,性能上有了很大提升,并且也发布了从php5.x向php7迁移的问题,所以今后php网站迁移后能够大幅度的提升网 ...
- 在Windows下编译Emacs
在Windows下编译Emacs Windows下编译好的Emacs主要有两个版本,一个来自http://nqmacs.sourceforge.net/,另一个来自http://www.crasseu ...
- 在Windows下编译FFmpeg详细说明
MinGW:一个可自由使用和自由发布的Windows特定头文件和使用GNC工具集导入库的集合,允许你生成本地的Windows程序而不需要第三方C运行时 MinGW,即 Minimalist GNU F ...
- 在Windows下编译OpenSSL(VS2005和VC6)
需要说明的是请一定安装openssl-0.9.8a . openssl-1.0.0我没有编译成功. 如何在Windows下编译OpenSSL (Vs2005使用Vc8的cl编译器)1.安装Activ ...
- Windows下编译SDL
Windows下编译SDL的理由我就不多说了,无论用VS来编译或调试SDL库都是很方便的.而且SDL源代码中也包含了VC工程,你所要做的只是解压VC工程,进行适当的配置,然后编译.调试. 编译SDL大 ...
- 一步步实现windows版ijkplayer系列文章之四——windows下编译ijkplyer版ffmpeg
一步步实现windows版ijkplayer系列文章之一--Windows10平台编译ffmpeg 4.0.2,生成ffplay 一步步实现windows版ijkplayer系列文章之二--Ijkpl ...
- windows下编译和安装boost库
boost是一个功能强大.构造精巧.跨平台.开源并且完全免费的C++程序库. 获取方式 boost提供源码形式的安装包,可以从boost官方网站下载,目前最新版本是1.59.0. 本机上正好有boos ...
- (转)windows下编译最新的x264
二:<windows下编译最新的x264> X264更新的比较快,每天都有更新,但算法模块,基本结构是没有多大变化的.x264都是用C语言写的包括C99,但C99语法是在VC中是没法用的( ...
- 在Windows下编译mongo-c-driver 1.3.x
在Windows下编译mongo-c-driver 1.3.x 在Windows下编译mongo-c-driver 1.3.x 1.安装 MSYS2https://sourceforge.net/pr ...
随机推荐
- Swift 学习- 02 -- 基础部分2
class NamedShape{ var numberOfSides: Int = 0 var name: String init(name: String) { self.name = name ...
- Oracle12c Release1 安装图解(详解)
Oracle12c Release1 安装图解(详解) Oracle12c 终于发布了,代号为 c,即为 Cloud(云),替代了网格 (Grid)运算. 我的机器基础环境:Windows8(x64) ...
- gnuradio 创建cos_source
C++教程 ys_linux@computer:~$ gr_modtool nm kcd Creating out-of-tree module in ./gr-kcd... Done. Use 'g ...
- Maven集成SSM
目录 Maven 集成SSM 添加log4j配置文件 配置web.xml 添加编码过滤器 添加put和delete请求 配置springmvc.xml 配置文件上传 配置druid连接池信息 配置sq ...
- servlet 遇到的奇怪问题
一. servlet URl 连接多了 %09 原因value里面多了个空格 value=" value'; 改成 value="value'; 二.servlet get方法可以 ...
- bzoj 2761
神题... 其实这题巨水,用各种诡异的方法都能A,包括STL等等 我之所以写题解,是因为我发现了一个bug:bz和luogu时限有问题! 这题我用了两种做法: ①:直接使用STL-map(不能直接用数 ...
- 几种stl的应用
1.set(特点:插入后元素自动从小到大排序) set< int > ::iterator it;//迭代器,可以指向同类型的集合 q.find(k);//其中一个元素k的地址 q.cou ...
- 支持向量机-SMO算法简化版
SMO:序列最小优化 SMO算法:将大优化问题分解为多个小优化问题来求解 SMO算法的目标是求出一系列的alpha和b,一旦求出这些alpha,就很容易计算出权重向量w,并得到分隔超平面 工作原理:每 ...
- 正则re模块
正则表达式的特殊字符: 语法: re.match(正则语法,字符串) # re.match() 为关键字 group(1) # 取出第一个匹配 括号中的值,1位第一个括号内的值 1. 特殊字符 1 . ...
- 美国主机BlueHost vs HostEase
网站备案对于大部分个人站长而言,花费成本高.程序复杂,因此在挑选主机时,常选择免备案IDC服务商,如美国.香港主机,且前几日国内某免备案机房因个别网站涉及非法言论而配合相关部门采取停网整顿等,为此站长 ...
GET,原文来自 →