Einrichten eines C++-Projekts für die Windows ML-Runtime-API

Important

Die Windows ML-Runtime-API ist derzeit experimentell und wird für die Verwendung in Produktionsumgebungen nicht unterstützt. Apps, die diese API ausprobieren, sollten nicht im Microsoft Store veröffentlicht werden.

In diesem Thema erfahren Sie, wie Sie ein systemeigenes C++-Projekt für die Verwendung der Runtime-API konfigurieren und eine IWinMLRuntime Instanz erstellen. Weiter zu Ausführen eines Modells mit der Windows ML-Runtime-API zum Laden, zur Tensorbindung und zur Inferenz.

Prerequisites

Note

C++20 und C++/WinRT sind Anforderungen dieser Dokumentationsbeispiele, nicht der Runtime-API. Die Laufzeit-API ist eine systemeigene COM-ABI, die auch von C oder C++ unter Verwendung von rohem COM, WRL, WIL oder einer anderen COM-Hilfskomponente gemäß den Sprachanforderungen dieser App genutzt werden kann.

Das CPU-Ausführungsziel ist der Basispfad. Die GPU- und NPU-Verfügbarkeit hängt von dem Gerät, den Plattformfunktionen und dem für Ihre App installierten Ausführungs-Back-End ab.

Konfigurieren der nativen NuGet-Wiederherstellung

Native Visual C++-Projekte benötigen einen NuGet-Zielmoniker, sodass die Paketwiederherstellung die systemeigenen Windows Ressourcen auswählt. Fügen Sie diese Eigenschaftengruppe am Anfang der .vcxproj Datei vor dem ersten Microsoft.Cpp.* Import hinzu:

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

Installieren Sie das Microsoft.Windows.AI.MachineLearning Paket mithilfe von "NuGet-Pakete verwalten " oder PackageReference. Um die Beispiele auf diesen Seiten zu erstellen, installieren Sie Microsoft.Windows.CppWinRT und legen Sie den C++-Sprachstandard auf ISO C++20 Standard (/std:c++20) fest. Das Windows ML-Paket liefert die Runtime-Header, Importbibliotheken und eigenständige DLLs; C++/WinRT stellt die mit winrt::com_ptr, winrt::check_hresult und <winrt/base.h> verbundenen Hilfen bereit, die nur vom Beispielcode verwendet werden.

Informationen zu CMake- und Bereitstellungsoptionen finden Sie unter „In sich geschlossene Installation“.

Runtime initialisieren

Ersetzen Sie den Code main.cpp durch folgenden Code:

// 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;
}

Erstellen Sie für die Architektur, die den Paketressourcen entspricht, zum Beispiel Release|x64. Ein erfolgreicher Build bestätigt, dass NuGet die Runtime-Header und die Importbibliothek gefunden und die erforderlichen DLLs neben der ausführbaren Datei kopiert hat.

Nächste Schritte