在 Objective-C 项目中与可执行文件链接

3

假设你想要使用某些功能或与第三方应用程序进行交互。 在 Objective-C 项目中,是否可以链接到一个可执行文件? 该二进制文件是否可以包装在框架内?


如果您需要的话,可以轻松地从应用程序内部运行命令行工具。该工具可以位于任何位置,例如在您的捆绑包中或用户的“PATH”中的任何位置。 - Paul R
如果第三方应用程序没有为外部脚本或操作编程,则此任务可能不是很容易。如果第三方应用程序只是一个命令行工具,那么您可以将该工具作为资源包含在您的应用程序中,并使用NSTask来启动它。 - dreamlax
1个回答

1
你可以使用XCode的复制文件阶段将额外的可执行文件放在主要可执行文件中,例如在Your.app/Contents/MacOS中,然后(假设你复制了grep)使用[[NSBundle mainBundle] pathForAuxiliaryExecutable:@"grep"]来定位它。
我会以稍微不同的方式实现,例如我有一个Python程序被我的一个应用程序调用(以plist格式获取响应非常好),我只是将其复制到My.app/Contents/Resources目录中,并使用[[NSBundle mainBundle] pathForResource:@"myScript" ofType:@"py"]来查找它。
你选择的方式可能只是个人口味问题。我认为将编译的可执行文件与主要可执行文件放在一起是有意义的,而将Python/Perl/其他语言放在资源中。从那里,只需要设置一个NSTask来启动和管道辅助程序的输出返回到主要可执行文件中。更多信息请参考这里

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接