You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Visual Studio 2022社区版编译兼容MSVC14.29的PHP

解决VS2022编译PHP时链接MSVC 14.29的问题

核心问题

使用VS2022安装程序搭建PHP编译环境时,因C++ CMake工具依赖MSVC 14.40,导致编译出的PHP或PECL扩展默认链接到14.40版本运行时,与官方PHP二进制依赖的14.29版本不兼容,触发扩展加载失败提示:

Warning: PHP Startup: Can't load module 'php_jsmin.dll' as it's linked with 14.40, but the core is linked with 14.29 in Unknown on line 0

解决方案步骤

1. 用VS2022安装程序安装指定组件

运行VisualStudioSetup.exe,选择「修改」现有安装(或新建安装),在「单个组件」标签中勾选以下内容:

  • MSVC v142 - VS 2019 C++ x64/x86 构建工具 (v14.29):搜索对应版本精准勾选
  • C++ CMake 工具 for Windows
  • 对应官方PHP编译用的Windows SDK版本(如10.0.19041.0):确保版本与官方PHP一致,避免额外兼容性问题

2. 强制指定编译时使用MSVC 14.29工具链

场景1:使用PHP官方build脚本编译

先调用VS2022的环境变量脚本,明确指定使用v142工具集:

call "C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Auxiliary\Build\vcvars64.bat" -vcvars_ver=14.29

再执行PHP的编译命令(如buildconf、configure、nmake),此时编译过程会强制绑定14.29版本的MSVC链接器。

场景2:用CMake编译PECL扩展

在CMakeLists.txt中直接添加工具集指定:

set(CMAKE_GENERATOR_TOOLSET v142)
set(CMAKE_VS_PLATFORM_TOOLSET_VERSION 14.29)

或在执行cmake命令时通过参数指定:

cmake .. -G "Visual Studio 17 2022" -A x64 -T v142,version=14.29

3. 处理CMake依赖冲突的额外方案

若安装C++ CMake工具后,系统仍默认调用14.40工具链,可手动创建工具链文件:
新建toolchain-v142.cmake,内容如下:

set(CMAKE_C_COMPILER "cl.exe")
set(CMAKE_CXX_COMPILER "cl.exe")
set(CMAKE_GENERATOR_TOOLSET v142)
set(CMAKE_VS_PLATFORM_TOOLSET_VERSION 14.29)

执行cmake时指定该工具链文件:

cmake .. -DCMAKE_TOOLCHAIN_FILE=toolchain-v142.cmake -G "Visual Studio 17 2022" -A x64

验证方法

编译完成后,用dumpbin工具检查产物的依赖版本:

dumpbin /dependents php_jsmin.dll

查看输出中MSVCRT.dll或VCRUNTIME140.dll相关条目,确认链接的是14.29版本运行时库。


内容的提问来源于stack exchange,提问作者McK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 20:26:02