问题背景
- 编程语言:C++
- 编译环境:Windows11环境
- 编译器:Visual Stdio Community 2022 Release
- 编译工具:CMake
- 问题发生时机:程序运行时
- 发生问题的库:onnxruntime-win-x64-gpu-1.16.0
- 报错信息:The given version [16] is not supported, only version 1 to 10 is supported in this build.
问题时现场
对于onnxruntime,直接指定其所在库位置,并链接名为onnxruntime的库即onnxruntime.lib
程序运行状态如下
问题定位
该报错信息由于显示版本16不支持,则直接定位到了是onnxruntime库出现了问题,经过问题的检索,最终发现是由于动态链接库onnxruntime.dll的问题所导致。
以上是github中作者对问题的解析,具其中讨论的开发者们所言,该问题出现在windows11中,在windows/systems32文件夹下存在onnxruntime.dll文件,会被程序优先链接,由于其版本落后则产生了如上的报错信息。
DLL链接搜索顺序
Dynamic-link library search order - Win32 apps | Microsoft Learn
解决方案
目前的解决方案为,直接在可执行文件main.exe所在文件夹内复制一份最新版本的onnxruntime.dll,可以在链接搜索时有更高的优先级。