2010-03-28 72 views
1

背景:將C函數轉換爲Objective C還是包含C庫的替代方法?

我是新來的Objective-C,我從來沒有碰過C之前。我試圖在我的iPhone/iPod Touch項目中包含一個C庫,並且無法使用包含的指令成功編譯庫的源代碼,因此我已經使用Xcode包含.h和.c文件。圖書館是希伯來文日期和相應的猶太節日。它可以在這裏找到:http://sourceforge.net/projects/libhdate/

我似乎無法將.c文件導入到我的實現文件中。我可以導入.h文件。當我嘗試使用#import "file.c",其中file.c是XCode中的文件時,它不起作用。爲什麼不?

我認爲只是在Objective-C中編寫函數,儘管只是我需要的函數而不是整個庫。

如何在Objective-C中使以下C函數工作?是否還有其他事情需要包括/重新編碼/編譯?怎麼會這樣?我幾乎可以肯定有一些東西缺失,但我不確定是什麼。

代碼:

int hdate_get_omer_day(hdate_struct const * h) 
{ 
    int omer_day; 
    hdate_struct sixteen_nissan; 

    hdate_set_hdate(&sixteen_nissan, 16, 7, h->hd_year); 
    omer_day = h->hd_jd - sixteen_nissan.hd_jd + 1; 

    if ((omer_day > 49) || (omer_day < 0)) 
     omer_day = 0; 

    return omer_day; 
} 

所以......我應該轉換它,或者試圖以某種方式來編譯,以適當的格式和怎麼做的? (順便說一下,我不知道靜態庫應該採用什麼格式,或者它應該是靜態的... - 我很迷茫......)

我很感謝幫助!

回答

3

您不導入實施文件。您只需將它們一起編譯幷包含適當的頭文件,以便您的代碼知道函數和數據類型聲明。

+0

那麼,請您詳細說明如何使用庫?這是否意味着我可以從Objective c中開始調用C函數? – Moshe 2010-03-28 06:03:19

+0

顯然如此。我需要弄清楚這個論點的正確格式,我很樂意去... – Moshe 2010-03-28 06:11:07