2009-06-23 26 views
7

我試圖寫一個SSH客戶端的iPhone,我想用libssh2開源庫這樣做。這是寫在C注意事項,包括庫作爲二進制VS源

我應該如何包括我的iPhone應用程序,這個C庫?我應該將它編譯成一些包含在我的應用程序中的二進制文件,還是將所有源代碼添加到我的項目中,並嘗試將其與我的其他應用程序一起編譯?

回答

3

我訓釋這個問題爲:

「我應該編譯C庫代碼一次,包括二進制庫在我的項目或者我應該包括所有的源每次我建造時間編譯它?我的應用程序?「

這要看情況。我工作的項目之一取決於幾個外部庫。基本上,我們有一個簡單的規則:

  • 你覺得你需要在C庫經常更改密碼?

    • 如果您要更改代碼或經常更新版本,請包含源代碼並將其與您的其餘項目一起構建。
    • 如果你不打算經常改變代碼或者根本不改變代碼,那麼只需在你的項目中包含預構建的二進制代碼就可以了。

根據庫的大小,您可能希望將其設置爲不同的目標在你的項目,或更大的靈活性,爲您的主項目的一個子項目。

如果我是你的地方,我會提前建立libssh2,只是包括我的iPhone項目的二進制庫。當然,我仍然會保留libssh2的源代碼,以防它需要在路上重建。

1

Three20 iPhone圖書館對他們的加入庫Xcode項目一個偉大的HOWTO。給那一槍。

2

我有一個iPhone應用程序是90%c。將第三方來源添加到我的項目並編譯時,我沒有任何問題。我正在使用Lua,zLib和libpng而不做任何修改。我還包括標準庫如unistd和libgen,他們只是工作™

+0

我的應用程序的大部分都是C,除了Objective-C API的位置。我很好奇你對Lua的使用。你打算通過iTunes分發?我在問,因爲我喜歡嵌入口譯員,但是我被蘋果禁止任何非蘋果提供的口譯人員所嚇倒。 Lua是否允許進入應用商店? – Nosredna 2009-06-23 20:10:53

0

我想你會發現從長遠來看,你會更好的建立它到一個獨立的庫和鏈接它與您的應用程序。這使得它更容易集成到未來的應用程序。另一個好處是它鼓勵代碼分離。如果您對庫很有信心,可以將調試exe與庫的發佈版本鏈接起來,並獲得一些額外的性能。

我不能真正想到創建庫的任何缺點,在設置它的初始成本之後,如果您需要對所有項目進行一些更改,還需要額外的項目進行修改。即使你不知道如何爲iPhone製作圖書館,這也是學習的好藉口。

只需添加源到你的項目應該可以正常工作爲好。