🎯 Como chamar Microsoft.Windows.AI a partir de C++ [Com código de exemplo]
A partir do Windows 10, o Windows inclui nativamente um ** runtime capaz de executar modelos de IA no formato ONNX **. Esse é o ** Windows ML (Windows.AI.MachineLearning) **.
Neste artigo, explicarei de forma prática como chamar Microsoft.Windows.AI.MachineLearning a partir de ** C++ (baseado em aplicativo Win32) **, com ** código de exemplo **.
✅ Preparação
◾ Requisitos do Ambiente
- Windows 10 (1809+) ou Windows 11
- Visual Studio 2019 ou posterior (A versão Community é suficiente)
- Suporte a C++/WinRT (
Microsoft.Windows.CppWinRT) - Windows SDK 10.0.17763.0 ou superior
✅ Configuração do Projeto
Crie um projeto no Visual Studio com a seguinte configuração:
Tipo: Aplicativo de Área de Trabalho do Windows em C++ (Projeto Vazio)
Subsistema: Windows (
WinMain)Adicione o seguinte pacote via NuGet:
1Microsoft.Windows.CppWinRT
✅ Código de Exemplo
Abaixo está um exemplo de configuração mínima que usa WinMain para combinar a API Win32 e Windows.AI.MachineLearning.
※ O modelo ONNX utilizado será chamado
model.onnxe deve ser colocado na mesma pasta que o arquivo executável.
main.cpp
| |
✅ Complemento: Como especificar Tensors de Entrada/Saída
Dependendo do modelo, ** a criação e o bind de Tensors ** são necessários antes da inferência.
Exemplo:
| |
A saída pode ser obtida de forma semelhante com result.Outputs().Lookup(L"output_0").
✅ Pontos de Atenção na Depuração
- Se o arquivo do modelo não existir na pasta de execução, ocorrerá uma
FileNotFoundException. - Se os nomes de entrada/saída não corresponderem, resultará em um erro
invalid_argument. - As especificações exatas de E/S do modelo podem ser verificadas com ferramentas como o Netron.
✅ Resumo
| Item | Descrição |
|---|---|
| API Usada | Windows.AI.MachineLearning (WinRT) |
| Linguagem | C++ (baseado em Win32) |
| Método Recomendado | Através de cabeçalhos C++/WinRT |
| Vantagens | Modelos ONNX rodam nativamente, suporte a GPU disponível |
| Atenção | Cuidado com os nomes de entrada do modelo e formato do Tensor |
✅ Alternativa: Para quem não quer usar WinRT
- Usando o
ONNX Runtimeda Microsoft, ** você pode lidar com modelos ONNX a partir de C++ de forma totalmente sem WinRT **. - É multiplataforma, permitindo código comum entre Windows e Linux.
📌 Conclusão
O Windows ML (Microsoft.Windows.AI) é um motor de inferência de IA poderoso que pode ser perfeitamente utilizado também a partir de C++. Se você precisa de inferência nativa no Windows, não deixe de experimentar.
Para aqueles que desejam exemplos concretos de criação de modelos ONNX e binding de Tensor, explicaremos isso em artigos subsequentes!
