我有一個來自第三方SDK的靜態庫 - 它是FIT SDK,它編碼並解碼「靈活的&可互操作的數據傳輸協議」,用於各種運動和健身設備。這是一種二進制格式,在SDK中有很好的描述,它還附帶了一堆CPP,C-Sharp和Objective-C示例 - 以及從CPP源構建的靜態庫。共同構建Swift,Objective-C和一個靜態C++庫
從大家似乎認爲,我應該能夠與靜態庫,包括必要的橋接頭建立我的Swift應用程序。
我做了一個screenflow(https://vimeo.com/205082135)顯示發生了什麼,這就是爲什麼我在這裏。
我可以得到Xcode 8(測試版3)來構建一個新的,包含庫甚至一些Objective-C代碼的新鮮項目。只要我添加了橋接頭,即使是基本的包含,XCode環路鏈接器錯誤的隕石坑,抱怨它無法從標準C++庫中找到某些類,例如or。 聞起來像Xcode的配置管理問題,我根本無法理清。
我與庫示例項目是在這裏:https://github.com/bleeckerj/Xcode-FIT-TEST
有沒有人見過這樣的事情?
我不確定這是否會完全解決您的問題,但Swift無法直接與C++進行交互操作。您需要用Objective C API封裝C++庫,並只將該Objective C API暴露給Swift。 –
戴夫的評論是正確的。您可以直接從Swift使用C(而不是C++)API,或者使用Obj-C API(如果有的話)(儘管基於您的項目具有.mm文件的事實,我猜測沒有預先存在包裝)。否則,你必須自己包裝它。 – jtbandes
另請參閱:https://developer.apple.com/library/content/documentation/Swift/Conceptual/BuildingCocoaApps/InteractingWithCAPIs.html#//apple_ref/doc/uid/TP40014216-CH8-ID17 – jtbandes