首页 > 解决方案 > 如何在 azure app 服务中使用 cl.exe 编译 c++ 代码并生成可执行文件

问题描述

我的应用程序托管在 azure 应用程序服务中,我想编译 c++ 代码并使用Processc# 中的类生成 .exe 文件运行时。我无法安装 c++ 编译器。但是我看到在我的 azure 应用服务中安装了 Visual Studio,并决定使用cl.exe位于以下文件夹中的Visual Studio D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86\cl.exe:.

当我在 azure 应用服务控制台中运行以下命令时:set PATH=%PATH%;D:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64_x86; & cl /EHsc test.cpp未生成 test.exe 并且没有错误。

标签: c++azureazure-web-app-servicecl

解决方案


我不是 C++ 开发人员。但是我很快搜索并找到了以下信息。我希望它会有所帮助。

1、不能直接在提示符下运行cl.exe。因为它依赖于一组环境变量。通常你需要从 VS 开发者提示符运行它或者运行一个 VS 附带的 bat 文件来设置环境变量。有关详细信息,请参阅https://docs.microsoft.com/en-us/cpp/build/building-on-the-command-line?view=vs-2019

问题是 Azure Web App 环境中没有这样的 bat 文件。

2、在 Azure Web App 环境中,文件系统是特殊的,因为文件也与其他用户共享。您可能能够读取系统文件,但您只能写入 D:\home 路径。因此,您还需要将输出文件路径更改为 D:\Home 。如果 cl.exe 需要写入其他文件夹中的某个文件,那么它将失败。

我能想到的解决方案是您需要下载独立的 MSVC 编译器工具集并将其传输到您的 Azure Web App 主文件夹。它包含 CL.EXE 文件和我们需要的 bat 文件。D:\home 文件夹中的文件在 Azure 中是持久的。然后,您可以按照此处的说明使用 CL.EXE 进行构建


推荐阅读