是否有可能擁有一個C靜態庫API,它在內部使用C++並將其隱藏在庫的用戶之中?使用iPhone中的C/C++靜態庫ObjectiveC Apps
我已經寫了一個可移植的C++庫,我希望靜態鏈接到iPhone應用程序。
我已經使用Max OS X'靜態庫'模板創建了一個Xcode項目,並且使用(extern「C」)複製了源代碼,並編寫了C wapper(用於處理異常)。
我想在另一個可可iPhone應用程序中使用生成的庫(.a文件)。
如果我在庫中的調用ObjectiveC文件和(.cpp)實現類上使用(.mm)擴展,一切都可以正常工作。
但是,當我嘗試將包裝文件更改爲(.c)擴展時,即使所有包裝函數文件都只是C函數,我在鏈接上遇到了未解析的符號。
只是因爲C++在庫中內部使用,這是否意味着外部它仍然必須被視爲一個C++程序。是否還沒有執行這種抽象?
編輯:感謝您的答覆,
我一直在使用的extern「C」,我只是不確定其中需要調用什麼項目配置。即。如果預計的調用將需要知道它是否使用C++或可能是無知的,並認爲它是一個純粹的C庫。
看來我不能,我必須在我的ObjectiveC類上使用(.mm)文件。
你是用extern「C」聲明你的C庫函數嗎? – 2008-12-18 05:32:18
Akusete,你的問題真的不是關於Objective-C ......它是關於C/C++和工具問題。我認爲你的問題在於你沒有得到C++運行時支持,因爲Xcode是你連接C應用程序的東西。如果在Q – 2008-12-18 06:00:00
中沒有關於Obj-C的任何具體內容,請不要使用Obj-C標記我的錯誤,我沒有意識到您已將其移除。 – Akusete 2008-12-18 06:01:58