2011-06-01 134 views
2

這可能不是一個簡單的問題,所以我不是在尋找明確的答案,而只是一些指向正確的方向。我對C/C++完全沒有經驗,但對Objective-C有很好的瞭解。我也不太瞭解不同的編譯器和體系結構,所以如果我說的很愚蠢,請保持良好態度:)XCode中使用的C++靜態庫

我有一些MatLab代碼需要移植到Objective-C以在iPhone應用程序上運行。我的第一個試驗性的路徑是檢查MatLab是否可以將代碼導出爲我可以在Objective-C代碼中調用的靜態C/C++庫。

這似乎是這種情況,但我不完全確定下一步該做什麼,以及在MatLab端編譯庫時需要記住哪些事項(即架構,兼容性,PC與Mac等) 。

我已經提供了一個.DLL和.LIB文件,我相信這些文件是Windows編譯的,所以它們不會對我有用,這是正確的嗎?從以前的靜態庫的工作,我可以看到他們都有一個.a擴展名 - 我需要做什麼來獲得一個與iPhone體系結構兼容的?

一旦我編譯了庫,如何導入並在我的項目中使用它?我能否直接從我的代碼中調用公共方法?

我還需要知道或意識到什麼?

任何幫助非常感謝!

感謝,

羅格

+0

這聽起來像你確實有Windows二進制文件。除非您準備深入研究與PC兼容的機器代碼/彙編程序,否則它們對您幾乎沒有幫助。你真的需要源代碼才能開始。 – 2011-06-01 05:40:58

回答

1

靜態庫包含一些特定的操作系統和平臺量身定製的二進制代碼。這意味着它將使用操作系統內部獲取內存(如果它使用動態內存)或執行任何其他操作系統特定的操作(日誌記錄,輸出)。

即使生成的代碼完全與操作系統無關(基礎數學可以在沒有操作系統支持的情況下實現),平臺完全不同,matlab將生成代碼用於英特爾平臺,iPhone運行在ARM架構中,不同的指令集調用約定...

除非matlab能夠爲iPhone生成靜態庫,或者至少爲ARM平臺生成靜態庫並使其與操作系統無關,否則您運氣不佳。

+0

感謝您的回覆David,我很感激。 – Rog 2011-06-02 23:17:43