From 97c1c4a9749d0e861c7980f8d613740f16e67565 Mon Sep 17 00:00:00 2001 From: ila Date: Thu, 23 Jul 2026 16:04:09 +0800 Subject: [PATCH] fix(v2): pin onnxruntime_go to v1.12.1 to match onnxruntime 1.19.2 DLL v1.31.0 requested ORT_API_VERSION 26 (onnxruntime 1.26); the field DLL is Python 3.8's onnxruntime 1.19.2 (API 19), so GetApi(26) returned NULL and init failed. v1.12.1 targets ORT API 19, matching the existing DLL with no download. Verified: native cgo build of internal/spike compiles ort.go against v1.12.1; Gio UI still cross-compiles for Windows. Co-Authored-By: Claude Opus 4.8 --- progress.md | 9 +++++++++ v2/go.mod | 2 +- v2/go.sum | 4 ++-- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/progress.md b/progress.md index 26e99fc..5cf3337 100644 --- a/progress.md +++ b/progress.md @@ -577,3 +577,12 @@ - 阻塞:无。`cmd/silver-pose` 全量(含 onnxruntime,`CGO_ENABLED=1`)的实时视频/弹窗/声音目视仍属 T-304 现场验收范围。 - 决策:V2 UI 正式为 Gio;`internal/ui` 只渲染已判定的最新帧,后台经 `Invalidate` 上屏;comctl/manifest 一类问题从根消除。 - 下一步:T-304——`go run ./cmd/silver-pose`(`CGO_ENABLED=1`)现场跑实时 RTSP → 红色画面/声音/弹窗/截图,验完置 DONE。 + +## 【2026-07-23】T-304 修复:onnxruntime DLL 版本不匹配(降 onnxruntime_go 匹配 1.19.2) + +- 状态:进行中(现场启动修复) +- 变更:`onnxruntime_go` 从 v1.31.0 降到 **v1.12.1**。根因:v1.31.0 请求 `ORT_API_VERSION 26`(onnxruntime 1.26),而现场 DLL 是 Python3.8 的 onnxruntime **1.19.2**(API 19),旧 DLL `GetApi(26)` 返回 NULL → “无法初始化 ONNX Runtime”。`onnxruntime_go` 模块版本与 onnxruntime 版本非一一对应(探测:v1.15/1.16/1.17→API20/1.20,v1.12.1→**API19/1.19**)。选 v1.12.1 使其匹配现场 1.19.2 DLL,用户无需下载新 DLL 或改配置。另在 `cmd/silver-pose` 补日志打印 ONNX/引擎/管线初始化的真实错误。 +- 验证:`ort.go` 用到的 `NewAdvancedSession/NewEmptyTensor/NewShape/SetSharedLibraryPath/InitializeEnvironment/DestroyEnvironment/AdvancedSession.Run/Destroy/Tensor.GetData` 在 v1.12.1 签名一致;本地 `gcc 9.4.0` 下 `CGO_ENABLED=1 go build ./internal/spike` 通过(真机同样可编);`go mod tidy` 通过;Gio UI `GOOS=windows CGO_ENABLED=0` 仍编译通过。 +- 阻塞:真机 `go run ./cmd/silver-pose`(Windows + CGO=1)需用户跑,确认不再报 ONNX 初始化失败、能起管线。 +- 决策:优先复用现场已有 1.19.2 DLL(降 onnxruntime_go),而非要求下载 1.26 DLL(该版本在现场未必可得,且 py38 DLL 是既有资产)。V2 后续发布包仍应按 config.example 的 `runtime/` 自带匹配 DLL。 +- 下一步:用户重跑现场验收;仍失败则贴控制台真实错误行。 diff --git a/v2/go.mod b/v2/go.mod index a6962ea..fb34fcf 100644 --- a/v2/go.mod +++ b/v2/go.mod @@ -4,7 +4,7 @@ go 1.24.0 require ( gioui.org v0.10.1 - github.com/yalue/onnxruntime_go v1.31.0 + github.com/yalue/onnxruntime_go v1.12.1 golang.org/x/image v0.26.0 golang.org/x/sys v0.39.0 ) diff --git a/v2/go.sum b/v2/go.sum index ca2497b..59e7632 100644 --- a/v2/go.sum +++ b/v2/go.sum @@ -9,8 +9,8 @@ github.com/go-text/typesetting v0.3.4 h1:YYurUOtEb9kGSOz4uE3k4OpBGsp1dDL8+fjCeaF github.com/go-text/typesetting v0.3.4/go.mod h1:4qZCQphq4KSgGTAeI0uMEkVbROgfah8BuyF5LRYr7XY= github.com/go-text/typesetting-utils v0.0.0-20260223113751-2d88ac90dae3 h1:drBZzMgdYPbmyXqOto4YhhJGrFIQCX94FpR4MzTCsos= github.com/go-text/typesetting-utils v0.0.0-20260223113751-2d88ac90dae3/go.mod h1:3/62I4La/HBRX9TcTpBj4eipLiwzf+vhI+7whTc9V7o= -github.com/yalue/onnxruntime_go v1.31.0 h1:1ln4YW1SFOFfGJZXe3jNOb2JUSt+l2pEneZfV8HdtFA= -github.com/yalue/onnxruntime_go v1.31.0/go.mod h1:b4X26A8pekNb1ACJ58wAXgNKeUCGEAQ9dmACut9Sm/4= +github.com/yalue/onnxruntime_go v1.12.1 h1:joCCmBnNjHy04jK9EMP/UV6oPPqySXlRgf3gcUcnI/g= +github.com/yalue/onnxruntime_go v1.12.1/go.mod h1:b4X26A8pekNb1ACJ58wAXgNKeUCGEAQ9dmACut9Sm/4= golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM= golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8= golang.org/x/exp/shiny v0.0.0-20250408133849-7e4ce0ab07d0 h1:tMSqXTK+AQdW3LpCbfatHSRPHeW6+2WuxaVQuHftn80=