面向HoloLens 2的Unity项目集成SimpleITK及部署报错如何解决?
问题排查与解决步骤
1. 修正SimpleITK编译配置
你之前使用的是Windows桌面ARM架构的通用编译流程,没有适配HoloLens 2运行的UWP平台,这是最核心的错误原因,需按如下要求重新编译SimpleITK:
- CMake配置时添加参数
-DCMAKE_SYSTEM_NAME=WindowsStore和-DCMAKE_SYSTEM_VERSION=10.0,明确指定目标平台为UWP - 禁用所有依赖桌面Win32 API的模块,仅保留基础影像处理相关的编译选项
- 运行库选择
/MD或/MDd,和Unity IL2CPP的UWP运行库配置保持一致
2. 调整Unity侧插件导入配置
- 选中原生库
SimpleITKCSharpNative.dll,在Inspector面板做如下配置:- 勾选 仅WSAPlayer平台生效,排除Editor平台
- CPU架构指定为 ARM64
- 勾选 Don't process,避免Unity对原生dll做额外的IL2CPP处理
- 选中托管库
SimpleITKCSharpManaged.dll,做如下配置:- 勾选 Editor 和 WSAPlayer 两个平台生效
- 处理器架构选择 Any CPU
- 关闭 Validate References 选项,避免IL2CPP裁剪时误删依赖
3. 关闭IL2CPP激进裁剪
Unity UWP发布默认开启的代码裁剪会误删SimpleITK托管层绑定的接口,可通过两种方式解决:
- 打开 Player Settings->Other Settings->Optimization,将 Managed Stripping Level 改为 Low 或 Disabled
- 若需保留裁剪功能,可在Assets根目录新建
link.xml文件,内容如下:
<linker> <assembly fullname="SimpleITKCSharpManaged" preserve="all"/> </linker>
4. 配置UWP应用权限
SimpleITK处理医学影像需要的文件读写等权限默认不会开启,需手动配置:
- 打开 Player Settings->Publishing Settings->Capabilities
- 勾选你用到的相关权限,常见需要勾选的有 Documents Library、Pictures Library、BroadFileSystemAccess、Internet(Client)
5. 补全原生依赖库
打开VS ARM64原生工具命令提示符,执行 dumpbin /dependents SimpleITKCSharpNative.dll 查看所有依赖项,将所有依赖的ARM64 UWP版本dll一同放入Unity的Plugins目录下。
完成以上步骤后重新打包部署即可解决dll加载后立刻卸载的问题。
内容的提问来源于stack exchange,提问作者Elena Stocco
相关产品推荐
相关产品推荐

