[Bada开发]使用共享库
本文介绍了如何在bada程序中使用共享库,共享或动态库是一个二进制文件,包括一套可调用的C/C++方法。文件说明了如何创建共享库,将它们连接到你的撤出那个徐,及如何在你的程序中使用这些方法。
共享或动态库是一个二进制文件,包括一套可调用的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;
转载于:https://www.cnblogs.com/webapplee/p/3767826.html
[Bada开发]使用共享库相关推荐
- C++开发支持Android共享库(so)教程
C++开发支持Android共享库(so)教程 概述: Android是运行于Linux上的移动系统,Android开发语言是java,Linux开发语言是C/C++.虽然google和java为An ...
- 在Linux平台上如何使用接静态库和共享库
1.Linux函数库介绍 函数库可以看做是事先编写的函数集合,它可以与主函数分离,从而增加程序开发的复用性.Linux中函数库可以有3种使用的形式:静态.共享和动态. 1) 静态库的代 ...
- 程序员的自我修养--链接、装载与库笔记:Linux共享库的组织
共享库(Shared Library)概念:其实从文件结构上来讲,共享库和共享对象没什么区别,Linux下的共享库就是普通的ELF共享对象.由于共享对象可以被各个程序之间共享,所以它也就成为了库的很好 ...
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
- [转] Adobe Flash Professional CS解决提示:您的内容将不流化。运行时共享库(RSL)预加载要求下载您的所有内容后才可播放第一帧。...
某日,发布并测试flash的过程中,总是出现"运行时共享库预加载警告"弹出框(如图1),并会生成.swz文件,开始以为对flash后续开发没有影响,结果不然,会导致.swf文件通过 ...
- 静态库和共享库之间的区别?
静态库和共享库有什么区别? 我使用Eclipse,并且有几种项目类型,包括"静态库"和"共享库"? 一个人比另一个人有优势吗? #1楼 对于静态库,链接器从库中 ...
- 无法加载JNI共享库(JDK)
当我尝试打开Eclipse时 ,弹出对话框指出: 无法加载JNI共享库" C:/JDK/bin/client/jvm.dll". 此后,Eclipse强制关闭. 我想提出几点: 我 ...
- C 语言编程 — 静态库、动态库和共享库
目录 文章目录 目录 文章目录 程序函数库 静态链接 创建静态库文件 动态链接 创建共享库文件 共享库文件的名字 共享库文件的存储路径 LD_LIBRARY_PATH 环境变量 ldconfig 指令 ...
- C语言的本质(35)——共享库
库用于将相似函数打包在一个单元中.然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法- 即,从模块中构建程序.Linux支持两种类型的库,每一种库都有各自的优缺点.静态库包含在编译时静 ...
- iOS开发中与库相关的术语
动态库 VS 静态库 Static frameworks are linked at compile time. Dynamic frameworks are linked at runtime .f ...
最新文章
- ACMNO.35 C语言-宏润年 给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y)
- java 打破双亲委派,为什么说java spi破坏双亲委派模型?
- 高中计算机应用基础试讲,试讲计算机应用基础.ppt
- sys.dbms_transaction.local_transaction_id出现的问题
- php语言冒泡法,冒泡排序法(php)
- 递归应用:八皇后问题
- JMeter Exception: java.net.BindException: Address already in use: connect(转)
- 151. 反转字符串里的单词
- 了不起的GIS:GIS相关软件、框架、代码、资源等的合集
- 花生壳诊断“域名指向IP与服务器不一致”的解决方法
- xd使用技巧_Adobe XD —你不知道的30条提示和技巧!
- 第939期机器学习日报(2017-04-14)
- android app 运行时提示 应用专为旧版 Android 打造
- 操作系统到底哪个好?windows好!
- python scatter参数详解_Python中scatter函数参数及用法详解
- BHEX创始人巨建华鲲鹏会分享:创业路上从不孤单
- 教你如何提取别人QQ头像的图片
- Android EditText文本编辑框获取焦点调出键盘输入法
- Android ROM开发(一)——Windows下Cygwin和Android_Kitchen厨房的安装
- 剑指Offer——编程题的Java实现
热门文章
- 【转载】7个最佳的双因素认证解决方案
- MySQL学习笔记.数据的导入和导出
- linux下打开.mpp文件(微软project)
- 华为交换机导入配置_华为交换机配置导入和导出
- 计算机硬盘有坏道,电脑硬盘有坏道怎么办?
- 网上流传的飞扬学院Java_收获| 云和JAVA、UI双班毕业,飞扬青春再出发!
- 如何把桌面计算机和回收站隐藏,电脑回收站怎么隐藏图标,隐藏我的电脑和回收站...
- 仿真树叶飘落效果的实现
- STM32F1系列与STM32F4系列的GPIO
- 常用URLscheme整理+不同场景下打开URLscheme的方法