gpt4 book ai didi

xcode - 部署cocoa应用程序及其C++ dylib如何打包它们?

转载 作者:行者123 更新时间:2023-12-03 16:37:11 26 4
gpt4 key购买 nike

我是 cocoa 和 mac 开发的新手。我编写了一个应用程序,它是使用 cocoa 框架的 Objective-C 和用 C++ 库 dylib 编写的后端的组合。

我正在使用 xcode 4.6 并拥有上述两个项目 Cocoa 应用程序和我的 C++ 库。 C++也是我自己的项目。

现在是部署的时候了。我想为它制作一个 pkg 安装程序。我可以在 xcode 4.6 中运行/调试它,因为我在 object-c 项目设置中添加了搜索库路径作为 C++ 项目的输出目录。因此它可以找到依赖并运行而不会崩溃。

现在,在 xcode 内的 Objective-C 项目树中,我看到 products -> mysoftware.app 文件。如果我在查找器中找到此 mysoftware.app 文件的位置并运行它,它就会崩溃。我打开此应用程序文件的包内容,我看到内容如下结构

   contents\(info.plist, MacOS, pkginfo, resources )

我在那里看不到我的 C++ 库,当我直接运行 mysoftware.app 时,双击它会崩溃,因为它找不到 dylib 我在报告窗口中看到堆栈跟踪,它找不到 dylib,提示该库没有找到 usr/local/lib/mylib.dylib我还手动将 dylib 文件放入可执行文件所在的 MacOS 中的 .app 中,希望它能从同一目录中找到该 lib,但它没有,给出了上面相同的消息,并从正常位置/usr 查找/local/lib/mylib.dylib

所以我的问题是如何解决 .app 包部署的依赖关系,我是否需要将 dylib 放入 .app 包中?我该怎么做,然后我的下一步是将这个单一的 .app 东西放入 pkg 安装程序中,

谢谢

最佳答案

这对我有用:

  1. 将 dylib 拖到您的框架中。
  2. 添加复制文件构建阶段、目标框架并将 dylib 放在那里。
  3. 添加一个包含以下脚本的运行脚本阶段:

MYLIBNAME=libmylib.dylib
install_name_tool -change /usr/local/lib/$MYLIBNAME @executable_path/../Frameworks/$MYLIBNAME "$BUILT_PRODUCTS_DIR/$EXECUTABLE_PATH"

就是这样。该脚本告诉您的应用程序从正确的位置加载 dylib - 否则它会提示在运行时找不到 dylib。

请注意,您不需要更改 dylib 本身中的任何内容 - 它可以从其他地方提供。

关于xcode - 部署cocoa应用程序及其C++ dylib如何打包它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17535604/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com