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

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

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

圖:設(shè)置Simulator-Debug build artifact
定義庫API
你必須在頭文件中宣布庫API,然后在相應(yīng)的.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宣布。
構(gòu)建庫
你必須構(gòu)建庫項(xiàng)目以生成庫二進(jìn)制文件。為了為每個連編配置構(gòu)建項(xiàng)目,在bada IDE中,選擇Project > Build Project。
如果連編成功,為每個配置創(chuàng)建一個相應(yīng)的二進(jìn)制文件,如下表(libDynaLib.so, libDynaLib.dll)所示。二進(jìn)制文件在項(xiàng)目的工作空間文件夾中,如, C:\bada\1.2.0\IDE\workspace\DynaLib\.Target-Debug\ libDynaLib.so。

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

圖:程序項(xiàng)目中的庫設(shè)置
使用共享庫方法
在你將共享庫連接到程序后,你可以使用程序中庫API定義的方法。
下面的代碼段顯示了使用共享庫的方法。
- // Using the shared library methods
- AppLog("Value from OspfDynaLib = %d",OspfDynaLib());
- MyClass* obj = new MyClass;
- obj->PrintMessage();
- delete obj;
【編輯推薦】
- bada開發(fā):播放實(shí)時rtsp流
- 官方文檔:什么是bada?
- 官方文檔:bada API參考資料
- 三星bada學(xué)習(xí)筆記:HelloWorld篇
- 三星bada學(xué)習(xí)筆記:基本概念