今天是: 收藏本站 设为主页
网站首页 >  技术专栏  >  php  > 

VS2015编译PHP扩展

日期:2017-04-29  点击率:149


打开VS选择“文件”--“新建”--“从现有代码创建目录”
选择C++
选择你的php扩展文件夹路径,并且给项目命名
选择“使用 visual studio”,项目类型选择“动态链接库(DLL)项目”,后面一直默认下一步一直到完成。
把项目解决方案配置改为Release
右键项目属性,C/C++,常规,附加包含目录,编辑

加入以下几个php源码目录(实际目录以开发者自己的目录为准):

E:\src\php-7.0.15-src

E:\src\php-7.0.15-src\main

E:\src\php-7.0.15-src\TSRM

E:\src\php-7.0.15-src\Zend

右键项目属性,C/C++,预处理器,预处理器定义,编辑,加入以下变量:

ZEND_DEBUG=0

PHP_EXTENSION

PHP_WIN32

ZEND_WIN32

HAVE_PHP318=1(这里红色部分,要改成你的扩展名称,不改成你的扩展名,php会不识别

COMPILE_DL_PHP318这里红色部分,要改成你的扩展名称,不改成你的扩展名,php会不识别

ZTS(这一个变量加上是开启线程安全,不加是关闭线程安全

生成解决方案,错误信息显示找不到“config.w32.h”,在源代码文件目录里搜索“config.w32.h”,在E:\src\php-7.0.15-src\win32\build\文件夹里找到“config.w32.h.in”,将这个文件复制到E:\src\php-7.0.15-src\main\文件夹里,去掉后面的“.in”

再次生成解决方案,显示错误信息LNK1120

错误 7 error LNK1120: 5 个无法解析的外部命令 EE:\src\php-7.0.15-src\ext\php318\Release\php318.dll 1 1 php318

右键项目属性,连接器,输入,附加依赖项,编辑,将php7.lib的路径放进去(这个文件在php编译后的程序文件夹里,根目录的dev文件夹里)

注意:为了让扩展能和php运行环境匹配,要根据你的php运行环境的编译版本(php5.6.9是VC11编译的),在E:\src\php-7.0.15-src\\main\文件夹里的config.w32.h文件里加上:

#define PHP_COMPILER_ID "VC11" 

生成解决方案,在项目根目录的Release文件夹里找到自己的php扩展php318.dll,复制到php的ext文件夹里,




下一篇:为Docker容器指定自定义网段的固定IP/静态IP地址   上一篇:在 windows 下使用 zephir 写 php7 扩展