在bada程序中使用共享庫
共享或動態庫是一個二進制文件,包括一套可調用的C/C++方法。文件中的代碼是不限位置的,這就意味著代碼可以存在任何存儲位置被上載和執行。Bada程序可以上載和卸載共享的庫。而interpreter(Ld.exe)會處理在運行時間的上載和卸載流程,在共享的庫目標和bada程序之間建立連接。
文件說明了如何創建共享庫,將它們連接到你的撤出那個徐,及如何在你的程序中使用這些方法。
創建共享庫為了創建共享庫,你必須首先在bada IDE中為該庫創建一個項目,為不同的連編配置定義屬性。然后,你必須定義庫API。最后,你必須構建庫二進制文件。如需了解更多,參見下面內容:
創建庫項目:
為了創建共享庫項目:
在bada IDE中,選定File > New > bada Application Project;
◆如果bada Application Project選項不可見,確保你使用的是bada C++.
◆輸入項目名稱,選擇bada Shared Library project type。
◆點擊FINISH

圖:創建共享庫
設置C/C++ Build Properties
你必須為新的共享文件設置build artifact settings。要求為目標和Simulator連編配置進行不同的設置。
為了給Target-Debug配置設定build artifacts:
◆在bada IDE Project Explorer中,右擊共享庫項目,選定Properties;
◆在Properties窗口,選定C/C++ Build > Settings;
◆在Build Artifact鍵上,輸入輸出前綴lib,及artifact拓展。
當你使用目標設備上的共享庫時,庫的文件按名必須是”lib”開頭。
◆輸入OK。
庫文件命名為lib.so

圖:設置Target-Debug build artifact
為了給Simulator-Debug配置設置build artifacts:
◆在bada IDE Project Explorer中,右擊共享文件庫,選定Properties;
◆在Properties窗口,選擇C/C++ Build > Settings
◆在Build Artifact鍵上,輸入輸出前綴為lib,artifact 拓展名為dll.。
◆Simulator在Windows環境中運行,動態庫為".dll"文件。因此,對Simulator來說,動態庫的缺省artifact拓展必須設置為“dll”。
◆點擊OK。
庫文件命名為lib.dll.

圖:設置Simulator-Debug build artifact
定義庫API
你必須在頭文件中宣布庫API,然后在相應的.cpp文件中定義。
下面的代碼段顯示了如何為你的程序宣布庫API
- // This method is exported from libDynaLib.so
- _EXPORT_ int OspfDynaLib(void);
- // Exported user-defined class
- class _EXPORT_ MyClass {
- public:
- MyClass(void){};
- virtual ~MyClass();
- void PrintMessage(void);
- };
注:在共享庫外需要讀取的庫方法或者類必須使用_EXPORT_ macro宣布。
構建庫
你必須構建庫項目以生成庫二進制文件。為了為每個連編配置構建項目,在bada IDE中,選擇Project > Build Project。
如果連編成功,為每個配置創建一個相應的二進制文件,如下表(libDynaLib.so, libDynaLib.dll)所示。二進制文件在項目的工作空間文件夾中,如, C:\bada\1.2.0\IDE\workspace\DynaLib\.Target-Debug\ libDynaLib.so。

圖:生成的庫二進制文件
將共享庫連接到你的程序
為了在你的bada程序中使用庫的輸出方法,你必須將庫連接到你的程序,把相應的頭文件放置在程序的.cpp文件中。此外,你必須定義庫和在程序項目屬性中通往其位置的搜索路徑。
為了設定在程序項目屬性中的庫和搜索路徑:
◆在bada IDE Project Explorer中,將lib文件夾添加到你的bada程序項目中;
◆復制用于目標連編配置的共享的庫二進制文件到新創建的lib文件夾中;
◆為了在Simulator運行程序,你必須復制Simulator的連編配置的二進制文件(.dll file) 到Simulator的庫路徑上。如,C:\bada\1.0.0\Model\Wave_LP1\Simulator\
◆在Project Explorer中,右擊程序項目,選定屬性
◆在Properties窗口中,選定C/C++ Build > Settings;
◆從Configuration的下拉菜單中,選定恰當的連編配置。
◆在Tool Settings 鍵中,選定bada C++ Linker > Miscellaneous.
◆添加在Libraries (-l)下使用的共享庫;
◆添加庫名稱,無前綴和文件拓展名。例如,添加libDynaLib.so binary文件為as DynaLib;
◆檢查Library search path (-L)下的缺省庫路徑(${PROJECT_ROOT}/lib)出口。如果沒有,新創的lib folder為搜素路徑。
◆點擊APPLY。
◆為其他連編配置重復步驟5-9.
◆保存設置,點擊OK。

圖:程序項目中的庫設置
使用共享庫方法
在你將共享庫連接到程序后,你可以使用程序中庫API定義的方法。
下面的代碼段顯示了使用共享庫的方法。
- // Using the shared library methods
- AppLog("Value from OspfDynaLib = %d",OspfDynaLib());
- MyClass* obj = new MyClass;
- obj->PrintMessage();
- delete obj;
【編輯推薦】