开发环境
1.win 7 32位 2.Visual Studio 2019(已安装使用C++的桌面开发组件)
准备工作
1.php-sdk-binary-tools(v2.1.9) 2.php源码(v8.0.17) 3.php x86 Non Thread Safe (v8.0.17)
制作组件
1.生成组件源码
cd php-8.0.17-src/ext // 进入php源码的ext目录
php ext_skel.php --ext myext // 生成组件源码
2.打开编译环境
cd php-sdk2.1.9 // 打开生成组件工具
phpsdk-vc15-x86.bat // 运行工具
3.生成组件
buildconf
configure --disable-all --enable-cli --enable-myext=shared --disable-zts
nmake
这里需要说明的有两点,一点是–enable-myext=shared,之所以加shared,是为了生成单独的,可以分享的dll文件,一点是–disable-zts是生成非安全线程的dll组件。
至此,php_myext.dll组件已经生成,在php-8.0.17-src\Release下,如果不加–disable-zts,会在Release_TS下。
测试组件
1.打开php-8.0.17-nts-Win32-vs16-x86 2.复制php_myext.dll到ext目录下 3.修改php.ini-production为php.ini,并修改以下选项
extension_dir = "ext"
extension=myext
4.新建测试文件test.php
$myext = extension_loaded('myext');
var_dump($myext);
test1();
$res = test2();
var_dump($res);
5.测试是否成功
./php test.php
以上目录均基于php-8.0.17-nts-Win32-vs16-x86。
注意事项
1.不同的PHP版本对应的Visual Studio也不同。
Visual C++ 14.0 (Visual Studio 2015) for PHP 7.0 or PHP 7.1.
Visual C++ 15.0 (Visual Studio 2017) for PHP 7.2, PHP 7.3 or PHP 7.4.
Visual C++ 16.0 (Visual Studio 2019) for master.
安装完成后,记得安装“使用C++的桌面开发”组件。切记根据php开发版本选择Visual Studio,否则生成的组件不可用。
2.php-sdk-binary-tools选择
目前的最新版本是2.2+,之所以选择2.1.9是因为2.2以上的版本需要64位操作系统。
参考链接
1.Build your own PHP on Windows 2.PHP For Windows 3.php-sdk-binary-tools 4.Visual Studio 2019
|