前面的準備工作:把orbslam移植到macos上了
現在是:把macos上的c++工程通過xcode移植到ios真機上
xcode:11版本
新建工程
新建乙個ios工程2+工程檔案基礎認識
生成.a靜態庫
xcode生成.a靜態庫,並引用
更細的對靜態庫 ios的乙個梳理與操作
靜態庫檔案,如果有多個類,一般是有乙個專門的.**件把其它.**件全部匯入,方便開發者使用靜態庫檔案:隱藏.m實現**
最後生成的.a檔案必須和.**件一起使用
上圖的錯,最終是通過將target->build settings->compile source as,從objective-c++改為objective-c,編譯成功的我現在是想把dbow2編譯成靜態庫,然後給我的主程式呼叫
最終靜態庫的呼叫,是要把.a靜態庫檔案和.h .hpp(這個是標頭檔案庫檔案都寫在了乙個檔案中,一般是可以暴露給外界的,會這麼寫)拷過去的。1- 先按照上面教程建立乙個靜態庫工程
2- 然後分別把dbow2的.h 和 .cpp檔案拷貝到新建的工程中
4- 然後像下圖這樣操作,匯入opencv依賴庫
5- 然後點一下專案名,在build phases下的copy bundle resources下面新增所有的庫檔案,這樣匯出.a檔案時,也會匯出所有庫檔案
6- 編譯執行,products下面會生成.a靜態庫檔案
後面發現還少了一些依賴庫沒有導進去,
social.framework,photos.framework,uikit.framework
呼叫靜態庫檔案
呼叫的時候,遇到了一些問題,像c++裡面的庫檔案 map vector這些匯入都會報錯,說:expected unqualified
oc工程中使用c++類
有時我們需要在oc的程式中使用已有的c++類,這時,我們可以把oc類的.m檔案字尾改為.mm,就可以在裡面使用c++類了。但是二者直接混用會出現一些問題以致編譯無法通過,這時可以簡單的通過把target中的compile source as改為oc++就可以通過編譯。這是乙個簡單的做法,但兩個世界確實很不一樣,如此這樣的深度混合有時會變地很棘手。
所以我把在viewcontroller.mm裡面的
#import 「dbow.h」
換成@class dbow2;
,但是遇到了新的問題:
==》.**件中 』vector』 『iostream』 file not found
網上大部分解決方案是把compile sources as設定項修改為objective-c++,但是這樣會引發我其他錯誤(在後面一篇有寫到)
glib移植到ARM上
1.說明 在arm上移植glib庫很麻煩,所依賴的包很多,本次移植涉及到的包主要有libffi 3.0.13.tar.gz,gettext 0.18.3.tar.gz。涉及到的工具有glib genmarshal,glib compile schemas,automake.2.配置 configur...
Linux程式移植到Android上
序言 由於本人還是比較偏重於先說明原理在說明實際操作步驟,要知其然更要知其所以然,如下圖所示 一般情況下,有兩種方法。1.乙個就是將程式靜態編譯,將程式中所有需要的庫全部編譯進可執行檔案中。這樣程式在android中執行就不需要鏈結任何動態庫了。但是帶來乙個非常大的弊端就是這個程式會非常大,資源利用...
將WebServer Boa移植到ARM上
www.boa.orttar zxf boa 0.94.13.tar.gz1.開啟compat.h 將 define timezone offset foo foo tm gmtoff 修改為 define timezone offset foo foo tm gmtoff 2.開啟boa.c檔案將...