如何在 azure app 服务中使用 cl.exe 编译 c++ 代码并生成可执行文件

Posted

技术标签:

【中文标题】如何在 azure app 服务中使用 cl.exe 编译 c++ 代码并生成可执行文件【英文标题】:How can I use cl.exe in azure app service to compile c++ code and produce executable file 【发布时间】:2019-09-26 13:49:15 【问题描述】:

我的应用托管在 azure 应用服务中,我想编译 c++ 代码并使用 c# 中的 Process 类生成 .exe 文件运行时。我无法安装 c++ 编译器。但是我看到在我的 azure 应用服务中安装了 Visual Studio,并决定使用位于以下文件夹中的 cl.exeD:\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 没有生成,也没有错误。

【问题讨论】:

Nasko,你有机会检查我的答案吗? 【参考方案1】:

我不是 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 需要写入其他文件夹中的某个文件,那么它将失败。

我能想到的解决方案是您需要下载 standalone MSVC compiler tool 集并将其传输到您的 Azure Web App 主文件夹。 它包含 CL.EXE 文件和我们需要的 bat 文件。 D:\home 文件夹中的文件在 Azure 中是持久的。 然后你可以按照指令here 用CL.EXE 构建

【讨论】:

以上是关于如何在 azure app 服务中使用 cl.exe 编译 c++ 代码并生成可执行文件的主要内容,如果未能解决你的问题,请参考以下文章

我们如何使用管道将azure devops中的应用程序部署到具有不同订阅和组织的azure app服务

如何使用 Azure App 服务部署任务通过 VSTS 将多个 jar 文件上传到 Azure

Azure 应用服务如何查看App Service Java堆栈JVM相关的参数默认配置值?

Azure 应用服务App Service 使用Tomcat运行Java应用,如何设置前端网页缓存的相应参数呢(-Xms512m -Xmx1204m)?

如何在Azure上链接docker容器?

Azure ASE 中的应用程序需要使用 NTML Web 服务进行身份验证