为 Windows ML 运行时 API 设置 C++ 项目

Important

Windows ML 运行时 API 目前是试验性的,不支持在生产环境中使用。 尝试此 API 的应用不应发布到Microsoft Store。

本主题演示如何配置本机 C++ 项目以使用运行时 API 并创建 IWinMLRuntime 实例。 继续使用 Windows ML 运行时 API 运行模型,以便进行模型加载、张量绑定和推理。

Prerequisites

注释

C++20 和 C++/WinRT 是这些文档示例的要求,而不是运行时 API 的要求。 运行时 API 是本机 COM 样式的 ABI,也可以根据该应用的语言要求,通过原始 COM、WRL、WIL 或其他 COM 帮助程序从 C 或 C++ 使用。

CPU 执行目标是基准路径。 GPU 和 NPU 可用性取决于设备、平台功能以及为应用安装的执行后端。

配置本机 NuGet 还原

本机 Visual C++ 项目需要 NuGet 目标名字对象,以便包还原选择 Windows 本机资源。 在第一次.vcxproj导入之前,在Microsoft.Cpp.*文件顶部附近添加此属性组:

<PropertyGroup Label="NuGet">
  <RestoreProjectStyle>PackageReference</RestoreProjectStyle>
  <NuGetTargetMoniker>native,Version=v0.0</NuGetTargetMoniker>
  <NuGetTargetPlatformIdentifier>Windows</NuGetTargetPlatformIdentifier>
  <NuGetTargetPlatformVersion>$(WindowsTargetPlatformVersion)</NuGetTargetPlatformVersion>
</PropertyGroup>

使用“管理 NuGet 包”或 PackageReference 安装 Microsoft.Windows.AI.MachineLearning 包。 若要生成这些页面中的示例,还请安装 Microsoft.Windows.CppWinRT,并将 C++ 语言标准 设置为 ISO C++20 标准(/std:c++20)。 Windows ML 包提供运行时标头、导入库和自包含 DLL;C++/WinRT 提供仅供示例代码使用的 winrt::com_ptr、winrt::check_hresult 和 <winrt/base.h> 便捷功能。

有关 CMake 和部署选项,请参阅 独立安装。

初始化运行时

将 main.cpp 替换为以下代码:

// Copyright (C) Microsoft Corporation. All rights reserved.

#include <Windows.h>
#include <winrt/base.h>

#include <WinMLRuntime.h>

#pragma comment(lib, "windowsapp.lib")

int wmain()
{
    winrt::com_ptr<IWinMLRuntime> runtime;
    winrt::check_hresult(WinMLCreateRuntime(
        __uuidof(IWinMLRuntime),
        runtime.put_void()));

    return 0;
}

为与包资产匹配的体系结构构建,例如 Release|x64。 生成成功表明 NuGet 还原找到了运行时标头和导入库,并将所需 DLL 复制到可执行文件所在目录。

后续步骤