无法将库正确复制到应用程序包

Failing to properly copy the library to Application Bundle

全部,

我正在使用 Xcode。我的项目包含一个可执行二进制文件和一对具有相互依赖性的动态库

在我的 Xcode 项目中,我成功地创建了一个脚本阶段来复制应用程序包中的 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的地方没有。代码完全一样

我错过了什么?

TIA!

您的一个库依赖于另一个库,因此您也需要更改那里的引用。

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"