MacOS下Unity使用ImageMagick遇DllNotFoundException问题求助
MacOS Unity中Magick.NET缺失原生库问题解决
错误根源
出现DllNotFoundException: Magick.Native-Q16-x64.dll是因为只导入了Magick.NET的托管DLL,而Magick.NET依赖对应平台的原生ImageMagick库——MacOS下是.dylib格式,不是Windows的.dll文件。
修复步骤
下载对应MacOS的原生库
针对你使用的Q16-x64版本,下载带Native后缀的Magick.NET包(如Magick.NET-Q16-x64.Native),解压后得到一系列.dylib格式的原生库文件。正确放置到Unity目录
- 在项目的
Assets/Plugins文件夹下新建macOS子文件夹(Unity会自动识别该平台目录) - 将所有解压得到的
.dylib文件放入Assets/Plugins/macOS - 选中这些
.dylib文件,在Inspector面板设置:- 平台选择
macOS - CPU架构勾选
x86_64(M系列芯片的Mac可额外勾选ARM64,依Unity版本支持情况而定) - 勾选
Include in Build,取消Editor Only选项
- 平台选择
- 在项目的
调整PDF转换代码
PDF转换需要先设置分辨率再加载文件,修正代码如下:public void Convertir(string pdf, string png) { using (var settings = new MagickSettings()) { settings.Density = new Density(300); // 先设置分辨率 using (var image = new MagickImage(pdf, settings)) { image.Write(png); } } }另外,MacOS下需确保Ghostscript可用:可通过Homebrew执行
brew install ghostscript安装,或把Ghostscript的原生库也放入Plugins/macOS目录。匹配Unity的.NET版本
打开Edit > Project Settings > Player > Other Settings,将Scripting Runtime Version设置为.NET 4.x Equivalent,保证与Magick.NET的版本兼容。
注意事项
- Magick.NET的托管库和原生库版本必须完全一致,不能混用不同版本
- M系列芯片的Mac需确认下载的原生库支持ARM64架构,或切换Unity为Rosetta模式运行
内容的提问来源于stack exchange,提问作者HugoD
相关产品推荐
相关产品推荐

