在 Windows 上调试带有本地库的 iOS 应用程序
从 Windows 机器调试 .NET MAUI iOS 应用程序未能加载像 IronOCR 这样的本地第三方库。 应用程序可能在连接的 iPhone 上启动,但 IronOCR 所依赖的本地 Tesseract 代码无法正确部署。
Failed to locate 'libtesseract.5'...
Access to the path ... is denied.
原因是 Apple 严格控制的开发模式。 iOS 应用程序必须用有效的 Apple 开发者证书进行 签名,本地库必须 编译为 ARM64 并通过 Apple 工具链链接,应用程序在运行时受 严格沙箱 约束限制文件系统访问。Apple 的工具(lipo)仅在 macOS 上运行,因此 Windows 机器无法完整打包或签署本地库。 当您从 Windows 调试时,Tesseract 二进制文件最终丢失、未签名或被沙盒阻止,导致上述错误。
这就是为什么相同代码在 Android 或 Windows 目标上运行顺畅的原因:这些平台加载本地库时无需 Apple 的签名要求,IronOCR 的捆绑 Tesseract 如预期工作。
解决方案
1. 通过 Mac 构建
直接在 macOS 上进行开发,或使用 Visual Studio 的 Pair to Mac 功能将 iOS 构建卸载到 Mac,而在 Windows 上编写代码。 通过 Apple 工具链进行构建是使本地库正确编译和签名的唯一方法。
2. 让 IronOCR 部署其自己的库
不要手动复制或更改本地库文件的位置。 IronOCR 为您处理 Tesseract 的部署,手动编辑路径会破坏 iOS 打包模型。
3. 通过 macOS 在真实设备上测试
在 Mac 上启动的物理 iPhone 或 iOS 模拟器上运行您的测试。 这准确地展示了签名的沙盒应用的行为情况,这是 Windows 调试会话无法再现的。

