如何使用 Visual Studio 2022 Community Edition 在 Windows 上编译 PHP

问题描述 投票:0回答:1

总体问题

Microsoft 仅为社区版提供名为 VisualStudioSetup.exe 的最新安装程序,在撰写 VS2022 时为:https://visualstudio.microsoft.com/vs/older-downloads/

我无法用它编译兼容的 PHP 二进制文件。

技术细节

我面临的问题是,当您从源代码(PHP 8.1、PHP 8.2、PHP 8.3)编译 PHP 时,它会链接到 MSVC 14.40。当您从 https://windows.php.net 下载时,它会链接到 MSVC 14.29

因此自编译的 PECL 扩展与下载的 PHP 二进制文件不兼容

症状

它们不会在启动时加载并显示以下消息: 警告:

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

这确实适用于所有自编译扩展,而不仅仅是 jsmin。

解决问题

我无法仅安装 MSVC 14.29,因为 PHP 需要两个组件:

  • MSVC v142 - VS 2019 C++ x64 构建工具 (v14.29)
  • 适用于 Windows 的 C++ CMake 工具

适用于 Windows 的 C++ CMake 工具 有一个该死的依赖性:

  • MSVC v143 - VS 2022 C++ x64 构建工具 (v14.40)

php 编译环境现在始终链接到 v14.40。这对于 Visual Studio 2019 安装程序来说没有问题,但 Microsoft 禁止下载旧的社区版本 - 您只能下载具有前面提到的依赖性问题的 Visual Studio 2022 安装程序。

问题

使用 Visual Studio 2022 安装程序从源代码编译 PHP 时如何链接到 MSVC 14.29。

提前非常感谢您!

php visual-studio visual-studio-2022 nmake
1个回答
0
投票

免责声明:这是@IanKemp评论的答案。

基本上没有已知的方法(至少对我来说没有)来改变 php 编译环境的行为。

但是有一个简单的方法可以完全避免这个问题。只需下载旧的 VisualStudioSetup.exe 社区版 2019,其中 MSVC 14.29 是最新的 MSVC。

可以在这里下载: https://download.visualstudio.microsoft.com/download/pr/93f24e82-778c-46ae-92f9-8d3010ecd011/a5da04d78b1f94ab145a365733476df7a1ec6219fa17f09c7e2f3c7cd74d9c9e/vs_Community。 exe


替代方案

我发现了一个不被接受的答案,它甚至提供了更结构化的下载,甚至更旧的VS版本:https://stackoverflow.com/a/78644904/1519125

我不能/不会将其指定为重复,因为我所指的答案不是被接受的答案。内容如下:

您也可以在这里下载其他版本:

© www.soinside.com 2019 - 2024. All rights reserved.