You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS2017 C++中使用packages.config的onnxruntime包编译报错求助

问题解决:VS2017中OnnxRuntime C++编译报错(命名空间语句)

问题背景

在Windows 10工作站上使用Visual Studio 2017开发C++代码,通过NuGet安装了Microsoft.ML.OnnxRuntime 1.12.1版本(native框架),生成的packages.config内容如下:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.ML.OnnxRuntime" version="1.12.1" targetFramework="native" />
</packages>

编写测试代码时,using Microsoft.ML.OnnxRuntime;语句编译报错,测试代码如下:

#include <iostream>

using namespace std;
using Microsoft.ML.OnnxRuntime;

int main()
{
    cout<<"Hello world"<<endl;

    return 0;
}

解决步骤

  • 添加必要头文件
    OnnxRuntime的C++ API需要先包含专属头文件,在代码开头补充:

    #include <onnxruntime_cxx_api.h>
    

    缺少该头文件时,编译器无法识别相关命名空间与API。

  • 修正命名空间写法
    Microsoft.ML.OnnxRuntime是OnnxRuntime的.NET API命名空间,C++版本的命名空间为Ort,正确写法为:

    using namespace Ort;
    

    也可以直接用Ort::前缀调用具体API。

  • 检查项目包含目录配置

    1. 右键项目 → 属性 → 配置属性 → C/C++ → 常规 → 附加包含目录
    2. 确认已添加NuGet包的头文件路径,VS2017下路径通常为$(SolutionDir)packages\Microsoft.ML.OnnxRuntime.1.12.1\native\include
    3. 若路径未自动添加,手动补充并匹配当前项目的配置(Debug/Release、x86/x64)
  • 链接器配置(后续调用API时需要)
    当使用OnnxRuntime具体功能时,需补充链接器设置:

    1. 右键项目 → 属性 → 配置属性 → 链接器 → 常规 → 附加库目录,添加$(SolutionDir)packages\Microsoft.ML.OnnxRuntime.1.12.1\native\lib\<平台>\<配置>(例如x64/Debug)
    2. 链接器 → 输入 → 附加依赖项,添加onnxruntime.lib(Debug版本对应onnxruntime_debug.lib)

修正后的测试代码

#include <iostream>
#include <onnxruntime_cxx_api.h>

using namespace std;
using namespace Ort;

int main()
{
    cout << "Hello OnnxRuntime!" << endl;

    // 简单API验证,确认库加载正常
    Env env(ORT_LOGGING_LEVEL_WARNING, "test");

    return 0;
}

内容的提问来源于stack exchange,提问作者Jonny_92

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 17:05:33