在 Windows 上调试带有本地库的 iOS 应用程序

This article was translated from English: Does it need improvement?
Translated
View the article in English

从 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 打包模型。

警告在 iOS 上手动复制本地库通常会触发上述沙盒访问错误。 除非您完全理解 Apple 的部署规则,否则请将部署交给 IronOCR。

3. 通过 macOS 在真实设备上测试

在 Mac 上启动的物理 iPhone 或 iOS 模拟器上运行您的测试。 这准确地展示了签名的沙盒应用的行为情况,这是 Windows 调试会话无法再现的。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。

准备开始了吗?
Nuget 下载 6,136,090 | 版本: 2026.7 刚刚发布
Still Scrolling Icon

还在滚动吗?

想快速获得证据? PM > Install-Package IronOcr
运行示例 观看您的图像变成可搜索文本。