【发布时间】:2021-02-28 18:45:51
【问题描述】:
我有一个与本机节点模块、静态和动态库捆绑在一起的电子项目。
在 mac 上运行打包的应用程序时,我在开发者控制台中遇到以下错误。本机节点模块(addon.node)加载正常,但不加载dylib。
Uncaught Error: Cannot open ./addon.node: Error: dlopen(./addon.node, 1): Library not loaded: Core.dylib
Referenced from: /Users/Camera/Documents/myapp/dist/mac/myapp.app/Contents/Frameworks/addon.node
Reason: image not found
at Object.<anonymous> (main.js:3)
at Object.<anonymous> (main.js:3)
at n (main.js:1)
at Module.<anonymous> (main.js:306)
at n (main.js:1)
at main.js:1
at main.js:1
binding.gyp
"targets": [{
"target_name": "addon",
...
'conditions': [
['OS=="mac"', {
...
'library_dirs': [
"/usr/local/lib",
"'$(CORE_DIR)'/lib"
],
"link_settings": {
"libraries": [
"-L'$(CORE_DIR)'/lib",
],
},
'libraries': [
"-lCore"
],
"copies":[{
'destination': './',
'files': [
"$(CORE_DIR)/lib/Core.dylib"
]
}],
'xcode_settings': {
'GCC_ENABLE_CPP_RTTI': 'YES',
'GCC_ENABLE_CPP_EXCEPTIONS': 'YES',
'CLANG_CXX_LIBRARY': 'libc++',
}
}],
我在 CORE_DIR/lib 中有这些静态和动态库
Core.a
Core.dylib
工作正常
通过在打包的应用程序中运行可执行文件,在终端中运行应用程序。 但是 Core.dylib 应该在终端当前目录的同一目录下。
./dist/mac/myapp.app/Contents/MacOS/myapp
但是如何通过双击运行来完成这项工作?我在打包的应用程序中尽可能复制了 Core.dylib,但没有任何效果。
谢谢
【问题讨论】:
-
我能够通过使用 install_name_tool 更改 addon.node 库安装名称来运行该应用程序。 install_name_tool -change Core.dylib @rpath/Core.dylib addon.node 现在需要弄清楚如何将它放入binding.gyp
标签: node.js macos electron node-gyp dylib