xcode - 未能正确地将库复制到应用程序包
问题描述
全部,
我正在使用 Xcode。我的项目包含一个可执行二进制文件和几个具有相互依赖关系的 dylib
在我的 Xcode 项目中,我成功地创建了一个脚本阶段来复制 Application Bundle 中的 dylib 文件(所有这些文件)。但是,当我尝试从终端运行应用程序时 - 它失败了。
我得到的错误如下:
Dyld Error Message:
Library not loaded: /usr/local/lib/liblibpropertypages.dylib
Referenced from: /Users/igorkorot/dbhandler/dbhandler/Build/Products/Debug/dbhandler.app/Contents/Frameworks/liblibdbwindow.dylib
Reason: image not found
但在脚本中,我有以下代码:
cp -f ~/dbhandler/dbhandler/Build/Products/Debug/liblibpropertypages.dylib "$TARGET_BUILD_DIR/$TARGET_NAME.app/Contents/Frameworks/liblibpropertypages.dylib"
install_name_tool -change /usr/local/lib/liblibpropertypages.dylib @executable_path/../Frameworks/liblibpropertypages.dylib "$TARGET_BUILD_DIR/$TARGET_NAME.app/Contents/MacOS/$PRODUCT_NAME"
cp -f ~/dbhandler/dbhandler/Build/Products/Debug/liblibdbwindow.dylib "$TARGET_BUILD_DIR/$TARGET_NAME.app/Contents/Frameworks/liblibdbwindow.dylib"
install_name_tool -change /usr/local/lib/liblibdbwindow.dylib @executable_path/../Frameworks/liblibdbwindow.dylib "$TARGET_BUILD_DIR/$TARGET_NAME.app/Contents/MacOS/$PRODUCT_NAME"
所以加载的地方liblibdbwindow.dylib
改变了,但加载的地方liblibpropertypages.dylib
没有。代码完全相同。
我错过了什么?
蒂亚!
解决方案
您的一个库依赖于另一个库,因此您也需要更改那里的引用。
install_name_tool -change /usr/local/lib/liblibpropertypages.dylib @executable_path/../Frameworks/liblibpropertypages.dylib "$TARGET_BUILD_DIR/$TARGET_NAME.app/Contents/Frameworks/liblibdbwindow.dylib"
您可能还想更改这些库的 ID:
install_name_tool -id @executable_path/../Frameworks/liblibpropertypages.dylib "$TARGET_BUILD_DIR/$TARGET_NAME.app/Contents/Frameworks/liblibpropertypages.dylib"
install_name_tool -id @executable_path/../Frameworks/liblibdbwindow.dylib "$TARGET_BUILD_DIR/$TARGET_NAME.app/Contents/Frameworks/liblibdbwindow.dylib"
推荐阅读
- macos - SwiftUI 列表未更新
- javascript - 反应useEffect异步警告?
- javascript - 单击时如何获取按钮的事件目标而不是按钮内部的内容
- r - R中的多元线性回归模型
- c - 如何获取任意类型的可变数量的参数并将每个参数打印在 C 中的单独行上?
- javascript - 混合 Typescript/Javascript 构建寻找永远不存在的文件
- javascript - React 测试库:TypeError:无法读取未定义的属性“文章”
- firebase - Firestore 模拟器 - 在自定义端口上连接
- reactjs - 当从非反应回调中使用时,反应钩子状态不是最新的
- python - 不和谐 py 音乐机器人