微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用node-gyp为电子链接和打包外部库

如何解决如何使用node-gyp为电子链接和打包外部库

我使用 N-API (a native OCR module) 创建了 node-addon-api,并绑定到 tesseract OCR。

我的目的是让原生 OCR 在电子下工作。我基本上检查了所有与 OCR 相关的 npm 包,它们都不适用于电子。这是我自己的测试项目 基于电子,它使用我的 node-native-ocr 模块: https://github.com/stoefln/electron-ocr

我的问题: 捆绑电子时,我无法打包所有依赖项。或者我这样做的方式似乎有问题,因为我目前在生产中运行电子项目时遇到此错误

dyld:找不到符号:_fmemopen 引用自:/Volumes/Shared 文件夹/下载/电子 OCR.app/Contents/Resources/app/node_modules/node-native-ocr/build/Release/dependencies/liblept.5.dylib 预期在:/usr/lib/libSystem.B.dylib

我目前尝试打包的方式:生成的 .node 文件依赖于 tesseract(用 brew 构建),它依赖于系统上安装的许多其他库。 我想出的是 a script,它递归地读取依赖项 (otool -l),将它们复制到 .node 文件夹中,并将链接 (install_name_tool -change ...) 更改为指向复制的 dylib 文件

我什至不确定这是否是正确的做法。 node-gyp 链接器不应该负责链接和打包所有内容吗? 有人问基本相同的问题:https://github.com/nodejs/node-gyp/issues/2258


如果您想重现我的问题,请提供更多信息

  1. 运行npm run export-mac
  2. 将 .app 文件复制到其他机器上,以确保它不使用系统中的库,而只使用打包的库。
  3. 通过命令行启动应用程序(否则您不会看到错误):./your_path_to_the_app_file/Electron\ OCR.app/Contents/MacOS/Electron\ OCR
  4. 单击 UI 中的单个按钮并检查终端输出

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。