共享或动态库是一个二进制文件,包括一套可调用的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;
【编辑推荐】