Objective c 在可执行文件中嵌入动态库
我已经创建了我的OS X应用程序的Objective c 在可执行文件中嵌入动态库,objective-c,xcode,macos,cocoa,dylib,Objective C,Xcode,Macos,Cocoa,Dylib,我已经创建了我的OS X应用程序的CLI版本(这是一个应用程序包)。在我的bundle版本中,有一个预编译的.dylib,通常放在可执行文件所在的目录中 这对命令行版本不起作用-有没有办法将其嵌入到我的可执行文件中?如果您只想分发与dylib相关的应用程序的二进制版本,您可以通过以下方式执行: 1.制作pkg安装程序,将dylib放在系统的某个地方 2.大多数第三方库支持构建静态版本(*.a)本身以及动态版本。因此,您可以构建库的静态版本,并与它们进行静态链接。为什么不能将命令行可执行文件也放在
CLI
版本(这是一个应用程序包)。在我的bundle版本中,有一个预编译的.dylib
,通常放在可执行文件所在的目录中
这对命令行版本不起作用-有没有办法将其嵌入到我的可执行文件中?如果您只想分发与dylib相关的应用程序的二进制版本,您可以通过以下方式执行: 1.制作pkg安装程序,将dylib放在系统的某个地方
2.大多数第三方库支持构建静态版本(*.a)本身以及动态版本。因此,您可以构建库的静态版本,并与它们进行静态链接。为什么不能将命令行可执行文件也放在
.app
捆绑包中?通过这种方式,它可以方便地访问.dylib
@特洛伊木马:命令行版本不会成为应用程序捆绑包版本(单独发布)的一部分。此外,它还需要安装在/usr/local/bin
中,我认为将.app放在其中是行不通的?我使用的任何安装命令行实用程序的应用程序都是通过将其从应用程序包复制到/usr/local/bin
来完成安装的。您可以通过在构建过程中安装带有dylib链接集的符号链接来实现这一点。OP使用Cocoa应用程序包中的.dylib
似乎没有问题,但使用命令行工具。是的,我从您的帖子中了解。我认为应用程序运行的环境中存在这个问题。您可以使用@loader\u path或@rpath或@executable path变量来定位您的.dyld,例如,当您从CLI运行应用程序时。其中一个变量未设置,您需要使用另一个变量。如果你把你的崩溃日志和文件夹结构放进去,我会给出更详细的建议。或者类似的问题:但所有这些都与框架和@rpath变量的位置有关…谢谢,但这个答案与我的问题完全不相关。很抱歉,我已经根据你的问题更新了答案。您还需要知道,像束一样分布的应用程序可以从命令行运行,也可以不使用UI。