1. 程式人生 > >單目跟蹤位姿產品研發(二)----在linux下將c++工程打包成動態庫so檔案API

單目跟蹤位姿產品研發(二)----在linux下將c++工程打包成動態庫so檔案API

       單目跟蹤位姿專案由對方公司提供應用場景,我方研發核心演算法,通過c++實現功能,然後對方公司通過java\js來開發炫酷的介面,共同合作完成,最終對方公司負責銷售推廣,推向市場。因此,涉及到java介面呼叫c++核心程式碼的問題。

現記錄一下如何在linux下將c++工程生成動態連結庫供java呼叫:

在qt中,我們可以直接生成動態連結庫

生成:

1、新建專案:選擇library模板,c++庫,一路預設,完成專案建立;

2、介面標頭檔案按照右圖來寫(注意extern "C"與export)、實現介面的函式實現內容放在同名的cpp檔案中,呼叫相關核心程式碼;

3、release模式下構建工程,生成4個so檔案(其中有三個是軟連結,只有一個是真實檔案)。

c++呼叫測試:

1、新建c++專案,專案名稱上右鍵新增庫,外部庫、瀏覽庫檔案目錄(即so檔案),平臺只選linux;

2、包含前者的2個shared標頭檔案,寫main函式呼叫即可。

詳細的步驟可參考連結:http://blog.sina.com.cn/s/blog_a6fb6cc90102vsdn.html 這是在Windows下生成動態連結庫dll檔案的方法,過程基本一致。

需要注意的是,linux下生成的so檔案,一般包括一個硬連結,幾個軟連結,軟連結都是指向該硬連結的,不可或缺,在拷貝檔案的時候若軟連結不能拷貝,則可先打包壓縮再拷貝。

另,除了可以通過呼叫動態連結庫的方法,還可在控制檯,呼叫cout列印的結果,進而達到java呼叫c++的目的。