Iphone 将库作为二进制与源代码包含的注意事项

Iphone 将库作为二进制与源代码包含的注意事项,iphone,c,Iphone,C,我正在尝试为iPhone编写一个SSH客户端,我想使用libssh2开放源代码库来实现这一点。它是用C写的 我应该如何为我的iPhone应用程序包含此C库?我是应该将其编译成包含在我的应用程序中的二进制文件,还是将所有源代码添加到我的项目中,并尝试将其与我的应用程序的其余部分一起编译?iPhone库提供了一个很好的方法,可以将它们的库添加到您的xcode项目中。试一试。我有一个90%c的iPhone应用程序。我在向我的项目添加第三方源代码和编译方面没有问题。我正在使用Lua、zLib和libpn

我正在尝试为iPhone编写一个SSH客户端,我想使用libssh2开放源代码库来实现这一点。它是用C写的


我应该如何为我的iPhone应用程序包含此C库?我是应该将其编译成包含在我的应用程序中的二进制文件,还是将所有源代码添加到我的项目中,并尝试将其与我的应用程序的其余部分一起编译?

iPhone库提供了一个很好的方法,可以将它们的库添加到您的xcode项目中。试一试。

我有一个90%c的iPhone应用程序。我在向我的项目添加第三方源代码和编译方面没有问题。我正在使用Lua、zLib和libpng,没有任何修改。我还包括了unistd和libgen等标准库,它们很管用™

我想你会发现,从长远来看,你最好将它构建成一个独立的库,并将它与你的应用程序链接起来。这使得它更容易集成到未来的应用程序中。另一个好处是它鼓励代码分离。如果您对库非常有信心,可以将调试exe链接到库的发布版本,并获得一些额外的性能

我真的想不出创建一个库有什么坏处,在设置库的初始成本之后,如果您需要对所有项目进行一些更改,那么就需要修改一个额外的项目。即使你不知道如何为iPhone创建库,这也是一个学习的好借口


只需将源代码添加到您的项目中,也可以正常工作。

我将此问题解释为:

“我应该编译一次C库代码,并在项目中包含二进制库吗?还是应该在每次构建应用程序时包含所有源代码并编译?”

视情况而定。我工作的一个项目依赖于几个外部库。基本上,我们有一个简单的规则:

  • 您认为您需要经常更改C库中的代码吗

    • 如果要更改代码或经常更新版本,请包含源代码并与项目的其余部分一起构建
    • 如果您不打算经常或根本不打算更改代码,那么在项目中只包含预构建的二进制代码可能是有意义的
根据库的大小,您可能希望将其设置为项目中的一个独特目标,或者为了更大的灵活性,将其设置为主项目的子项目


如果我处在你的位置,我会提前构建libssh2,并在我的iPhone项目中包含二进制库。当然,我仍然会保留libssh2源代码,以防将来需要重新构建它。

我的大多数应用程序也是C,除了我可以使用Objective-C API的地方。我对你使用Lua很好奇。你打算通过iTunes发布吗?我这么问是因为我想嵌入一个口译员,但我被苹果公司禁止任何非苹果公司提供的口译员的禁令吓跑了。应用商店中是否允许Lua?您可以自由使用脚本语言,但不能允许人们在其中加载任意代码。为了安全起见,我将脚本编译(硬代码)到应用程序中。