Unity部署ARM64设备(Hololens 2)时自定义DLL找不到问题求助
解决Hololens 2部署时ARM64 DLL加载失败的问题
针对你遇到的DllNotFoundException(WinError 0x7e),按以下步骤排查解决:
1. 修正Unity插件目录结构
Unity对不同CPU架构的原生DLL有严格的目录要求,直接放在Assets/Plugins根目录会导致打包时ARM64 DLL未被正确包含:
- 创建
Assets/Plugins/x86目录,将编辑器用的x86版本CrackDetection.dll移入,并在Inspector面板设置:- Platform Settings:勾选Windows,CPU选择x86,设置Copy to Output Directory为
Copy if newer
- Platform Settings:勾选Windows,CPU选择x86,设置Copy to Output Directory为
- 创建
Assets/Plugins/ARM64目录,将ARM64版本的OpenCV_ImageProcessing_ARM64.dll、依赖的OpenCV ARM64 DLL移入,同样在Inspector设置:- Platform Settings:勾选Windows,CPU选择ARM64,Copy to Output Directory设为
Copy if newer
- Platform Settings:勾选Windows,CPU选择ARM64,Copy to Output Directory设为
2. 处理VC运行时依赖
如果你的自定义DLL是用VS2015+编译的,确实需要ARM64版本的MSVCP140.dll和VCRUNTIME140.dll:
- 不能从第三方网站下载,直接从你的Visual Studio安装路径获取,路径示例:
C:\Program Files (x86)\Microsoft Visual Studio\2022\BuildTools\VC\Redist\MSVC\14.38.33130\arm64\Microsoft.VC143.CRT - 将该目录下的
msvcp140.dll、vcruntime140.dll复制到Assets/Plugins/ARM64目录,和其他DLL放在一起 - 更省心的方案:编译自定义DLL时,在VS项目属性中设置C/C++ -> 代码生成 -> 运行库为
/MT(静态链接),这样DLL会把VC运行时打包进去,无需额外携带这些依赖DLL
3. 验证DllImport和DLL文件名
- 确保
[DllImport("OpenCV_ImageProcessing_ARM64")]中的名称和DLL文件名完全一致(不带.dll后缀,Unity会自动处理),检查拼写错误 - 确认自定义DLL是ARM64架构的Release版本:Debug版本的DLL依赖Debug版VC运行时,Hololens设备默认没有,必须用Release编译
4. 打包后验证文件存在性
打包Hololens应用后,用Visual Studio的App Package Explorer打开生成的.appx包,检查Assets\Plugins\ARM64目录下是否包含所有需要的DLL:
- 你的自定义ARM64 DLL
- 依赖的OpenCV ARM64 DLL
- (如果用动态链接)VC运行时DLL
内容的提问来源于stack exchange,提问作者CocoaMilka
相关产品推荐
相关产品推荐

