1. 環境
- 作業系統:windows 11 64bit。
- vs版本:2022。
- onnxruntime版本:1.12.1。
2. 問題
在下載了官網編譯好的包,並在vs中配置好依賴之後,執行程式,立刻報:
The given version [12] is not supported, only version 1 to 10 is supported in this build
網上有一個回答,說到這個問題[1],意思是,在程式執行的時候,載入的dll並不是你指定的onnxruntime.dll,而是系統路徑(/c/WINDOWS/SYSTEM32/onnxruntime.dll)中的onnxruntime.dll,造成inlucde的標頭檔案與載入的dll不一致,因此報錯。
因為/c/WINDOWS/SYSTEM32/在搜尋路徑中的優先順序應該比自己設定的附加庫目錄要高,根據查詢,Windows連結器載入動態庫的搜尋路徑順序為:
- 當前程序的可執行模組所在的目錄。
- 當前目錄。
- Windows系統目錄。如C:\Windows\System32,GetSystemDirectory函式檢索此目錄的路徑。
- Windows目錄。 如C:\Windows,GetWindowsDirectory函式檢索此目錄的路徑。
- PATH環境變數中列出的目錄。
因為先在C:\Windows\System32中找到了onnxruntime.dll,因為報了這個錯。
3. 解決
將你指定的版本的onnxruntime.dll複製到你生成的exe所在目錄。
4. 參考
[1] [Build]
[2] Windows/Linux連結器載入動態庫的搜尋路徑順序