tonyenc(PHP代码加密)在 Windows 下编译64位dll
环境准备
说明:7.2使用VC15编译,本文以PHP7.0.26举例 使用Visual Studio 2017
需要从 官网 下载 PHP7.0.26 的源代码包和已编译的 PHP 程序,再分别解压,得到两个目录(假设在 C 盘):
C:\php-7.0.26-src
C:\php-7.0.26-nts-Win32-VC14-x64
如何编译
1)拿到要编译的代码,在 VS 2017 菜单中选择「文件」-「新建」-「从现有代码创建项目」,然后在弹出窗口中选择你要编译的代码,类型选择「动态库(dll)」。
2)此时 VS 2017 打开了项目,把工具栏中的「Debug」改为「Release」,「x86」改为「x64」,在菜单中选择「项目」-「属性」。然后在弹出窗口的左侧「常规」栏目下,「配置类型」选择为「动态库(.dll)」:
3)然后在左侧「C/C++」-「常规」栏目下,「附加包含目录」中,加入:
C:\\php-7.0.26-src
C:\\php-7.0.26-src\\main
C:\\php-7.0.26-src\\TSRM
C:\\php-7.0.26-src\\Zend
4)接着在左侧「C/C++」-「预处理器」栏目下,「预处理器定义」中,加入:
ZEND_DEBUG=0
PHP_EXTENSION
PHP_WIN32
ZEND_WIN32
HAVE_XXX=1
COMPILE_DL_XXX
ZTS
注意,要把上面的 XXX 改为大写的扩展名 (如扩展叫 tonyenc 就把 XXX 改成 TONYENC),否则 PHP 将无法识别扩展。ZTS用于告诉编译器开启线程安全(如果去掉就是不开启)。注意,线程安全的开启与否,取决于前面下载到的 C:\php-7.0.26-nts-Win32-VC14-x64,它如果启用了线程安全编译,这里就开启线程安全。
5)在左侧「链接器」-「输入」栏目下,「附加依赖项」中,加入:C:\php-7.0.26-nts-Win32-VC14-x64\dev\php7.lib,即前面下载得到的已编译的 PHP 程序。
6)点确定,然后菜单中选择「生成」-「生成解决方案」,恭喜你,编译器报错:无法打开包括文件 ../main/config.w32.h,这时把 C:\php-7.0.26-src\win32\build\config.w32.h.in 复制到 C:\php-7.0.26-src\main\config.w32.h (注意没有了后面的 in),然后在 config.w32.h 中加入:
#define PHP_COMPILER_ID "VC14"
这将指明运行库是 VC14,与前面下载到的已编译 PHP 程序匹配,重新生成下解决方案,这样就能成功编译了!
最后更新于 2023-10-26 01:57:13 并被添加「PHP」标签,已有 4434 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处