在项目开发过程中,开发者出于保护核心算法的目的,希望将部分核心代码封装起来,使得其他使用者无法查看具体的代码实现细节,而不影响正常的调用。常见的思路是将核心的函数封装成库,下面将结合例程说明具体实现方法。

1.库的建立

1)新建库工程

在CCS中,选择Project-》NewCCSProject,在工程配置窗口中,选择相应的“Target”device,以及输入自定义的工程名字;然后需要注意在“Projecttypeandtool-chain-》outputtype”中选择“StaticLibrary”,而不是“Executable”,“Executable”对应的是我们一般用到的可生成.out可执行文件的工程。

图1在CCS中新建库工程

2)定义相关的库函数

新建完工程后,即可将所需封装的函数放入工程文件中,在此以简单的一个功能函数为例进行说明。

图2.C文件中添加目标库函数

3)添加头文件.h

先在工程目录新建一个“include”文件夹,然后在该文件夹新建

图3新建.h文件

在.h文件中进行库函数的函数声明。

图4函数名声明

至此,编译该工程,即可生成所需的.lib文件,在默认的Debug文件路径中。

图5编译生成对应的.lib文件

2.在工程项目中使用该库文件

以C2000WARE中的“led_ex1_blink”例程为例,说明下如何在实际工程中使用定义的库文件。

1)建立文件链接

首先将第一步生成的.lib文件以及.h文件所在文件夹一并拷贝至目标工程,由于具体的库函数代码实现体现在.c文件,因此最终的工程无法索引至原始的.c文件。

图6复制相应的.h和.lib文件

下一步需要在该工程中建立对库文件的链接关系。首先在工程属性C2000Compiler-》IncludeOption中添加.h文件所在的文件路径,注意此处使用的是相对路径,以确保工程路径发生变更时的一致性。

图7添加.h所在的文件路径

然后,在C2000Linker-》FileSearchPath中分别添加对应的.lib文件名以及所在文件路径。

图8添加.lib文件名及路径

2)添加函数头文件及调用

在目标工程中添加.h文件的声明,以及测试变量,并在主函数中进行调用。

图9.h文件声明以及调用示例

烧录该工程到芯片,运行后验证“test”结果符合预期。

此外,除了上述方法,可以采用以下方式把工程的调试功能禁止,这样在debug模式下就无法进行任何的调试操作以及查看代码,具体步骤:

选择“option--symdebug:none”,即在工程属性Build-》C2000Complier-》AdvancedOptions-》AdvancedDebugOptions中选择--symdebug:none作为Debuggingmodel。

图10使能option--symdebug:none

选择一个例程,进行以上配置后,在调试模式下的效果如图11所示。在该模式下,所有symbols和工程的链接将被移除,因此无法进行任何的调试操作以及查看源代码。建议在工程开发的最后阶段再使用该模式。

图11工程示例

责任编辑人:CC

matlab算法封装成库,将函数封装成库使用的实现方法相关推荐

  1. import 库、from 库 import 函数、from 库 impor *、import 库 as 别名的区别

    Python中库的4种引用方法:import 库.from 库 import 函数.from 库 impor  *.import 库 as 别名 区别: import turtle turtle.fd ...

  2. python math库常用函数_Python math库常用函数

    math库常用函数及举例: 注意:使用math库前,用import导入该库 >>> import math 取大于等于x的最小的整数值,如果x是一个整数,则返回x >>& ...

  3. 简易zlib库解压缩函数封装

    最近由于要用zip解压缩,网上找了,没看到满意的源码,于是自己写了一个.亲测可用 接口很简单,看代码吧.有问题的地方欢迎留言指正 zlib_wrapper.h: #ifndef ZLIB_WRAPPE ...

  4. DOM-11 【兼容】鼠标行为坐标系、pageXY封装、拖拽函数封装

    鼠标行为 e.属性 含义 相关属性 clientX/Y 鼠标位置相对于当前可视区域的坐标 x/y(FF火狐部分版本不支持) pageX/Y(IE9以下不支持) 鼠标位置相对于当前文档的坐标 layer ...

  5. react封装函数_react request.js 函数封装

    1.request.js  函数封装 import { Toast } from 'antd-mobile'; import axios from 'axios'; import store from ...

  6. C# 后台服务器端 Get 请求函数封装

    请求参数封装 /// <summary> /// 拼接 Get请求参数 /// </summary> /// <param name="parames" ...

  7. Matplotlib库常用函数总结

    Matplotlib库常用函数总结 Matplotlib库由各种可视化类构成,内部结构复杂. matplotlib.pyplot是绘制各类可视化图形的命令字库,相当于快捷方式. pyplot的绘图区域 ...

  8. 【matlab】matlab算法封装成工具包提供给程序调用

    说明: 1.非进程通讯协议,无需在电脑上安装完整版的matlab开发环境. 2.本项目以C#为案例,调用的语言不限,操作流程基本相同. 一.准备工作 1.安装MATLABWebAppServerSet ...

  9. 函数模板案例_利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试

    案例描述: 利用函数模板封装一个排序的函数,可以对不同数据类型数组进行排序 排序规则从大到小,排序算法为选择排序 分别利用char数组和int数组进行测试 #include <iostream& ...

最新文章

  1. python输入输出-Python3输入输出
  2. ML之MIC:利用某数据集计算机最大信息系数MIC并可视化MIC矩阵热图及其代码实现
  3. bzoj3456: 城市规划
  4. java几种多线程_Java多线程实现的几种方式
  5. 给apache安装mod_rewrite模块
  6. 图书馆如何应用视频直播?
  7. 计算机考研数据结构代码题总结--Day01
  8. 多维空间搜索算法RTree
  9. WPF 自定义 写实风 雷达图控件
  10. 【模仿学习】南京大学港中文联合总结: 29页中文详述模仿学习完整过程
  11. 魏俊妮《全面培训系统建设与培训管理实务》课程大纲
  12. .NET 开发从入门到精通
  13. spring系统学习之控制反转 ioc
  14. 美团企业版:地利尚可,天时不足
  15. rasa算法_使用 Rasa 构建天气查询机器人
  16. krait和kryo_各种Java序列化性能比较
  17. 是的,奈学教育一周年了!
  18. IIS如何设置默认访问https
  19. python使用163邮箱发送邮件
  20. 健身管理系统 健身房管理系统集成方案

热门文章

  1. vcruntime140_1.dll无法继续执行代码怎么办?
  2. windows常用操作命令
  3. 有关区块链的一些理解
  4. 爱丁堡大学—计算机应用数学,爱丁堡大学计算机应用数学理学硕士
  5. mac启动选项找不到linux,Mac升级10.10后开机引导不见了,无法进入Linux
  6. 浅谈搜索引擎——SEO
  7. 广东技术师范大学计算机考研资料汇总
  8. 达人评测 i5 13400和i5 12600K选哪个好
  9. 并行模式与算法(一)
  10. Adobe官网正版Ps+LrC软件免费拿,最高还可抽取99.99元牛年红包!