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。检查项目包含目录配置
- 右键项目 → 属性 → 配置属性 → C/C++ → 常规 → 附加包含目录
- 确认已添加NuGet包的头文件路径,VS2017下路径通常为
$(SolutionDir)packages\Microsoft.ML.OnnxRuntime.1.12.1\native\include - 若路径未自动添加,手动补充并匹配当前项目的配置(Debug/Release、x86/x64)
链接器配置(后续调用API时需要)
当使用OnnxRuntime具体功能时,需补充链接器设置:- 右键项目 → 属性 → 配置属性 → 链接器 → 常规 → 附加库目录,添加
$(SolutionDir)packages\Microsoft.ML.OnnxRuntime.1.12.1\native\lib\<平台>\<配置>(例如x64/Debug) - 链接器 → 输入 → 附加依赖项,添加
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
相关产品推荐
相关产品推荐

