如何在Azure中使用事件网格触发C ++代码?

时间:2019-06-03 13:55:34

标签: azure azure-functions azure-blob-storage azure-eventgrid

我正在尝试在Azure存储中上传blob,并且成功上传。现在,下一步是使用C ++代码处理Blob。 由于Azure函数不支持C ++,我该如何处理Blob?

2 个答案:

答案 0 :(得分:1)

Azure Function支持运行.exe可执行文件。因此,我建议生成您的cpp程序exe文件,然后将其上传到Azure Function并运行以下示例代码。

enter image description here

using System;

public static void Run(TimerInfo myTimer, TraceWriter log)
{
    System.Diagnostics.Process process = new System.Diagnostics.Process();
    process.StartInfo.FileName = @"D:\home\site\wwwroot\TimerTriggerCSharp1\testfunc.exe";
    process.StartInfo.Arguments = "";
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;
    process.StartInfo.RedirectStandardError = true;
    process.Start();
    string output = process.StandardOutput.ReadToEnd();
    string err = process.StandardError.ReadToEnd();
    process.WaitForExit();

    log.Info($"C# Timer trigger function executed at: {DateTime.Now}");
}

答案 1 :(得分:1)

到现在为止,正如评论所说,在Azure Functions上,支持.NET,Python,Node.js,Java,没有C ++。

但是,如果您在Linux上工作,则可以考虑在Python或Node.js中调用C ++,例如,使用Extending Python with C or C++遵循Python文档或使用C++ Addons遵循Node.js文档。我认为将事件网格与Azure Function一起使用更简单。

并且您可以参考有关Calling C/C++ from Python?的现有SO线程。

或者在Windows上工作,另一种解决方案是将C ++代码编译为Visual Studio中的动态库,然后可以从C#代码调用C ++中的dll库。请参考MSDN文档Calling Native Functions from Managed Code来了解它,或者参考SO线程Possible to call C++ code from C#?

希望有帮助。