HarmonyOS鸿蒙Next中MindSpore Lite 2.9.0 ONNX→.ms 转换卡住了!

HarmonyOS鸿蒙Next中MindSpore Lite 2.9.0 ONNX→.ms 转换卡住了! 我正在开发一款基于华为色卡的图片色调识别程序,目的就是让普通用户也能从网上找到摄影师的优秀作品,提取相关的滤镜,并且保存成华为色卡的格式。这样免去一些繁琐的步骤,而且优秀的摄影师自己也不一定能记住色卡的信息,因为增加了相关的滤镜,提取出来的色卡信息也只是很初步的,需要用户自己再微调。目前,我正在做场景适配。因为用户下载到的摄影作品这张照片儿,它不可能直接提取色卡,那是不切实际的。所以要先做场景匹配,比如说宠物能大概匹配到一个基准的场景,然后比较提取相关的色卡,在8种色卡当中找到一个较为准确的类型。然后我想通过训练数据达到这样的目的。但是现在需要MindSpore Lite 2.9.0 ONNX→.ms 转换。Windows 下 converter_lite.exe 依赖 libssp-0.dll,需要 GCC 13.x MinGW-w64运行时。试过 13.2 MSVCRT 和 16.1 UCRT 均报 0xC0000139(入口点不匹配)。求匹配的 MinGW 版本或帮我预编译 .ms,实在是手头没有linux😮‍💨,所以求助各位大佬了,感激不尽!


更多关于HarmonyOS鸿蒙Next中MindSpore Lite 2.9.0 ONNX→.ms 转换卡住了!的实战教程也可以访问 https://www.itying.com/category-93-b0.html

16 回复

这个问题其实不是你 ONNX 模型的问题,而是:

MindSpore Lite 2.9.0 Windows converter_lite.exe

本身的 Windows 运行时依赖有坑。

你遇到的:

0xC0000139

本质含义是:

DLL入口点找不到(Entry Point Not Found)

也就是:

libssp-0.dll
libstdc++
libgcc_s

这些 GCC Runtime 版本不匹配。

你试的:

  • MinGW-w64 GCC 13.2 MSVCRT
  • MinGW-w64 GCC 16.1 UCRT

都不行很正常。

因为:

MindSpore Lite 2.9.0 Windows版

实际上是:

特定 MinGW toolchain 编译的

而不是通用 ABI。


直接说结论(非常重要)

目前:

MindSpore Lite Windows Converter

官方兼容性非常差。

社区里大量人:

  • ONNX → .ms
  • TFLite → .ms
  • Paddle → .ms

最后都:

转 Linux/Docker

因为 Windows 环境太容易炸。


你现在最省时间方案(推荐顺序)

方案1:直接用WSL(最推荐)

你虽然没 Linux:

但 Windows 其实可以:

WSL2

这才是目前最稳方案。

安装:

wsl --install

然后:

sudo apt update
sudo apt install unzip wget

下载:

wget https://ms-release.obs.cn-north-4.myhuaweicloud.com/2.9.0/MindSpore/lite/release/linux/x86_64/mindspore-lite-2.9.0-linux-x64.tar.gz

Linux 下 converter:

./converter_lite \
--fmk=ONNX \
--modelFile=model.onnx \
--outputFile=model

成功率远高于 Windows。


方案2:Docker(也很稳)

如果你电脑支持 Docker:

docker run -it ubuntu:22.04

然后跑 Linux converter。

这是很多 AI 工程师实际用法。


方案3:换低版本 MindSpore Lite(Windows 更稳定)

很多人最后停在:

MindSpore Lite 2.2.x
2.3.x

因为:

2.9.0 Windows Runtime 依赖太新。

尤其:

libssp-0.dll

是 GCC Stack Protector Runtime。


你当前真正缺的是什么版本?

你需要的是:

MinGW-w64 GCC 13.x
+ UCRT
+ POSIX Thread

不是:

MSVCRT

而且:

SEH exception model

也要匹配。

通常需要:

x86_64-13.2.0-release-posix-seh-ucrt

很多人装错成:

win32
sjlj
msvcrt

就会炸。


推荐你直接用这个 MinGW 组合

建议:

WinLibs GCC 13.2.0 UCRT POSIX SEH

这种组合最接近 MindSpore 官方编译环境。

搜索:

winlibs-x86_64-posix-seh-gcc-13.2.0-ucrt

然后:

把:

bin/

加入 PATH。

重点确认:

libssp-0.dll
libstdc++-6.dll
libgcc_s_seh-1.dll

来自同一套 GCC。

不要混装。


你现在的问题大概率是:

系统 PATH 里:

存在多套 mingw runtime

比如:

  • Qt
  • MSYS2
  • Git
  • LLVM
  • DevEco
  • Android ndk

都可能带:

libstdc++

结果:

converter_lite.exe

加载错 DLL。

这是 Windows 下最恶心的问题。


最有效排查方法

执行:

where libssp-0.dll

你大概率会看到:

多个版本

然后:

where libstdc++-6.dll

也是。


推荐一个暴力解决方案(很好用)

直接:

把 converter_lite.exe 所需 dll:

libssp-0.dll
libstdc++-6.dll
libgcc_s_seh-1.dll

复制到:

converter_lite.exe 同目录

避免 PATH 污染。

这是 Windows AI 工具常规操作。


还有一个重要坑

MindSpore Lite 2.9 对 ONNX 支持其实一般。

很多模型:

  • dynamic shape
  • unsupported op
  • LayerNorm
  • Resize
  • GatherND

都会卡。

所以:

卡住

不一定是 DLL。

也可能:

模型图转换死循环

建议先测试官方最小模型

先试:

mnist.onnx

如果最小模型都炸:

就是环境问题。


你这个项目方向其实很适合

你这个:

摄影作品 → 场景分类 → 推荐华为色卡模板

本质是:

轻量视觉分类

其实不需要大模型。

MobileNetV3 就够。

比如:

  • 人像
  • 风景
  • 夜景
  • 宠物
  • 美食
  • 建筑
  • 胶片风

做:

8~20类分类

非常适合端侧。


你甚至不一定非要 MindSpore

HarmonyOS NEXT 目前:

ONNX Runtime Mobile

ncnn

MNN

很多时候比 MindSpore Lite 更稳定。

尤其:

ncnn

特别适合:

移动端轻量分类

一句话总结

你这个问题大概率不是模型问题,而是:

MindSpore Lite 2.9.0 Windows Converter

依赖的:

MinGW-w64 GCC Runtime

版本不匹配导致。

最推荐方案:

WSL2/Linux 转换

其次:

WinLibs GCC13.2 UCRT POSIX SEH

并确保:

所有 libstdc++ / libssp DLL 来自同一套工具链

不要混用。

更多关于HarmonyOS鸿蒙Next中MindSpore Lite 2.9.0 ONNX→.ms 转换卡住了!的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


我还能说什么,大佬牛逼,可以加W吗?

有要学HarmonyOS AI的同学吗,联系我:https://www.itying.com/goods-1206.html

可以加好友请教吗?

其实我也是小白,我是问的AI,O(∩_∩)O哈哈~

0xC0000139 错误,是 converter_lite.exe 依赖的 MinGW 运行库版本不匹配,安装 MinGW-w64 GCC 11.3.0 (x86_64-posix-seh),这是与 MindSpore Lite 2.9.0 编译链完全兼容的版本,不会出现 ABI 冲突,

我去试试,感谢支持❤️,

你这是AI告诉你的吗?因为在github上没有这个版本,😓,

如果还是不行,建议查看华为开发者文档,

希望HarmonyOS能继续优化系统稳定性,减少崩溃和重启的情况。

同问,

报错 0xC0000139 通常是因为 converter_lite.exe 编译时依赖的 GCC 运行时版本,与你系统中安装的 MinGW-w64 版本不匹配。

同问+1,

可能是以下原因导致转换卡住:

  • ONNX模型包含MindSpore Lite 2.9.0未支持的算子(如动态形状、自定义Op)。
  • 模型过大或内存不足,转换过程触发系统OOM。
  • 输入输出的数据类型或维度不匹配,转换器死循环等待。
  • 转换工具版本与ONNX IR版本不兼容。
    解决方向:检查模型是否经过优化(如简化ONNX),减少网络规模,或查看转换日志的具体错误信息。

converter_lite.exe 依赖的入口点不匹配,是因为你本地 MinGW 运行时版本与编译 converter_lite 时用的 GCC 13.x 不匹配。直接使用 MSYS2 的 gcc-libs 包即可解决。

  1. 安装 MSYS2 后,在 MSYS2 MINGW64 终端执行:

    pacman -S mingw-w64-x86_64-gcc-libs
    

    这会安装 GCC 13.2.0 全套运行时。

  2. C:\msys64\mingw64\bin 复制 libgcc_s_seh-1.dll, libstdc++-6.dll, libwinpthread-1.dll, libssp-0.dllconverter_lite.exe 同目录,再运行转换。

如果仍报错,改用 WSL2 Ubuntu 一分钟解决:
在 WSL 内 pip install mindspore-lite,直接用 Python 调用 mindspore_lite.Converter(onnx_path, ms_path) 转换,完全绕开 Windows DLL 问题。

回到顶部