本文介绍了如何在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

  1. // This method is exported from libDynaLib.so
  2. _EXPORT_ int OspfDynaLib(void);
  3. // Exported user-defined class
  4. class _EXPORT_ MyClass {
  5. public:
  6. MyClass(void){};
  7. virtual ~MyClass();
  8. void PrintMessage(void);
  9. };

注:在共享库外需要读取的库方法或者类必须使用_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定义的方法。

下面的代码段显示了使用共享库的方法。

  1. // Using the shared library methods
  2. AppLog("Value from OspfDynaLib = %d",OspfDynaLib());
  3. MyClass* obj = new MyClass;
  4. obj->PrintMessage();
  5. delete obj;

转载于:https://www.cnblogs.com/webapplee/p/3767826.html

[Bada开发]使用共享库相关推荐

  1. C++开发支持Android共享库(so)教程

    C++开发支持Android共享库(so)教程 概述: Android是运行于Linux上的移动系统,Android开发语言是java,Linux开发语言是C/C++.虽然google和java为An ...

  2. 在Linux平台上如何使用接静态库和共享库

    1.Linux函数库介绍 函数库可以看做是事先编写的函数集合,它可以与主函数分离,从而增加程序开发的复用性.Linux中函数库可以有3种使用的形式:静态.共享和动态. 1)         静态库的代 ...

  3. 程序员的自我修养--链接、装载与库笔记:Linux共享库的组织

    共享库(Shared Library)概念:其实从文件结构上来讲,共享库和共享对象没什么区别,Linux下的共享库就是普通的ELF共享对象.由于共享对象可以被各个程序之间共享,所以它也就成为了库的很好 ...

  4. ios 开发中 动态库 与静态库的区别

    使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...

  5. [转] Adobe Flash Professional CS解决提示:您的内容将不流化。运行时共享库(RSL)预加载要求下载您的所有内容后才可播放第一帧。...

    某日,发布并测试flash的过程中,总是出现"运行时共享库预加载警告"弹出框(如图1),并会生成.swz文件,开始以为对flash后续开发没有影响,结果不然,会导致.swf文件通过 ...

  6. 静态库和共享库之间的区别?

    静态库和共享库有什么区别? 我使用Eclipse,并且有几种项目类型,包括"静态库"和"共享库"? 一个人比另一个人有优势吗? #1楼 对于静态库,链接器从库中 ...

  7. 无法加载JNI共享库(JDK)

    当我尝试打开Eclipse时 ,弹出对话框指出: 无法加载JNI共享库" C:/JDK/bin/client/jvm.dll". 此后,Eclipse强制关闭. 我想提出几点: 我 ...

  8. C 语言编程 — 静态库、动态库和共享库

    目录 文章目录 目录 文章目录 程序函数库 静态链接 创建静态库文件 动态链接 创建共享库文件 共享库文件的名字 共享库文件的存储路径 LD_LIBRARY_PATH 环境变量 ldconfig 指令 ...

  9. C语言的本质(35)——共享库

    库用于将相似函数打包在一个单元中.然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法- 即,从模块中构建程序.Linux支持两种类型的库,每一种库都有各自的优缺点.静态库包含在编译时静 ...

  10. iOS开发中与库相关的术语

    动态库 VS 静态库 Static frameworks are linked at compile time. Dynamic frameworks are linked at runtime .f ...

最新文章

  1. ACMNO.35 C语言-宏润年 给年份year,定义一个宏,以判别该年份是否闰年。提示:宏名可以定义为LEAP_YEAR,形参为y,既定义宏的形式为 #define LEAP_YEAR(y)
  2. java 打破双亲委派,为什么说java spi破坏双亲委派模型?
  3. 高中计算机应用基础试讲,试讲计算机应用基础.ppt
  4. sys.dbms_transaction.local_transaction_id出现的问题
  5. php语言冒泡法,冒泡排序法(php)
  6. 递归应用:八皇后问题
  7. JMeter Exception: java.net.BindException: Address already in use: connect(转)
  8. 151. 反转字符串里的单词
  9. 了不起的GIS:GIS相关软件、框架、代码、资源等的合集
  10. 花生壳诊断“域名指向IP与服务器不一致”的解决方法
  11. xd使用技巧_Adobe XD —你不知道的30条提示和技巧!
  12. 第939期机器学习日报(2017-04-14)
  13. android app 运行时提示 应用专为旧版 Android 打造
  14. 操作系统到底哪个好?windows好!
  15. python scatter参数详解_Python中scatter函数参数及用法详解
  16. BHEX创始人巨建华鲲鹏会分享:创业路上从不孤单
  17. 教你如何提取别人QQ头像的图片
  18. Android EditText文本编辑框获取焦点调出键盘输入法
  19. Android ROM开发(一)——Windows下Cygwin和Android_Kitchen厨房的安装
  20. 剑指Offer——编程题的Java实现

热门文章

  1. 【转载】7个最佳的双因素认证解决方案
  2. MySQL学习笔记.数据的导入和导出
  3. linux下打开.mpp文件(微软project)
  4. 华为交换机导入配置_华为交换机配置导入和导出
  5. 计算机硬盘有坏道,电脑硬盘有坏道怎么办?
  6. 网上流传的飞扬学院Java_收获| 云和JAVA、UI双班毕业,飞扬青春再出发!
  7. 如何把桌面计算机和回收站隐藏,电脑回收站怎么隐藏图标,隐藏我的电脑和回收站...
  8. 仿真树叶飘落效果的实现
  9. STM32F1系列与STM32F4系列的GPIO
  10. 常用URLscheme整理+不同场景下打开URLscheme的方法