将库包含为二进制与源的注意事项

时间:2009-06-23 19:43:08

标签: iphone c

我正在尝试为iPhone编写SSH客户端,我想使用libssh2开源库来实现。它是用C语言编写的。

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

4 个答案:

答案 0 :(得分:3)

我将这个问题解释为:

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

这取决于。我工作的一个项目取决于几个外部库。基本上,我们有一个简单的规则:

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

    • 如果您要更改代码或经常更新版本,请包含源代码并将其与项目的其余部分一起构建。
    • 如果您不打算经常或根本不更改代码,那么在项目中包含预先构建的二进制文件可能是有意义的。

根据库的大小,您可能希望将其设置为项目中的不同目标,或者作为主项目的子项目,以获得更大的灵活性。

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

答案 1 :(得分:2)

我有一个90%c的iPhone应用程序。我没有问题将第三方源添加到我的项目和编译。我使用的是Lua,zLib和libpng,没有任何修改。我还包括标准库,如unistd和libgen,它们只是工作™

答案 2 :(得分:1)

Three20 iPhone库有很好的方法可以将他们的库添加到您的xcode项目中。试一试。

答案 3 :(得分:0)

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

在设置库的初始成本之后,我无法想到创建库的任何缺点,如果需要对所有项目进行一些更改,还需要修改额外的项目。即使你不知道如何为iPhone制作图书馆,这也是学习的好借口。

只是将源添加到您的项目也应该正常工作。