0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

将函数封装成库使用的实现方法

h1654155282.3538 来源:中文支持论坛 作者:Aki Li 2020-12-19 09:34 次阅读

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

1.库的建立

1)新建库工程

在CCS中,选择Project -》 New CCS Project,在工程配置窗口中,选择相应的“Target” device,以及输入自定义的工程名字;然后需要注意在“Project type and tool-chain -》 output type”中选择“Static Library”,而不是“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文件

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

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

然后,在C2000 Linker-》File Search Path中分别添加对应的.lib文件名以及所在文件路径。

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

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

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

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

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

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

选择“option --symdebug:none”,即在工程属性Build-》C2000 Complier-》Advanced Options-》Advanced Debug Options中选择--symdebug:none作为Debugging model。

图 10 使能option --symdebug:none

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

图 11 工程示例
责任编辑人:CC

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 封装
    +关注

    关注

    123

    文章

    7271

    浏览量

    141080
  • 函数
    +关注

    关注

    3

    文章

    3866

    浏览量

    61308
收藏 人收藏

    评论

    相关推荐

    动态库封装成python模块的方法

    之前的文章 将静态库封装成 python 模块中讲解了如何将静态库封装成 python 模块,静态库封装相对来说还是有点复杂,今天来介绍下动态库封装成 python 模块的
    发表于 07-13 15:24 377次阅读

    怎样matlab中的数学模型封装成物理电气模型

    各位朋友,本人现在正在搭建双馈异步电机的内部模型,但是要和外部的电气模型连接起来,不知道怎样把数学模型封装成电气模型啊,在MATLAB中,有个三相异步电机的原始电气模型,打开里面的建模,是数学模型封装成电气模型的,但是却看不到
    发表于 12-13 21:37

    有没有人知道怎么c#中的回调函数二次封装成DLL,以便labview调用

    有没有人知道怎么c#中的回调函数二次封装成DLL,工labview调用
    发表于 03-18 20:42

    如何CCS3.3工程中.C文件封装成OBJ文件

    如何CCS3.3工程中的.C文件封装成OBJ文件
    发表于 11-02 09:41

    怎么把寄存器编程封装成固件编程

    基于野火“霸道”和“指南”——零死角玩转STM32入门&中级篇学习地址:课程简介:本课程从STM32内存映射开始讲起,告诉你什么是寄存器,怎么样实现寄存器编程,然后怎么把寄存器编程封装成固件
    发表于 08-03 06:47

    GPIO构件封装方法与规范

    (给出函数名与接口函数),以供实际编程使用。 必要性1、利用软件构件,编程开发效率且程序更规范;2、底层驱动封装成构件,可提高...
    发表于 11-08 06:58

    STM32 Printf函数利用标准实现方法是什么?

    STM32 Printf函数利用标准实现方法是什么?
    发表于 12-02 06:13

    单片机数码管显示驱动封装成一个函数

    单片机数码管显示驱动封装成一个函数,方便需要用到的时候直接调用1、数码管电路原理图2、数码管码表3、位选IO管脚定义4、延时函数5、动态显示一位数码管6、动态显示两位数码管7、动态显
    发表于 01-24 06:21

    FPGA子函数封装问题

    请问我想在quartus II里面把编好的子函数封装成一个子文件,然后建立自己的调用,这个该怎么弄?导出网表文件(qxp)吗?虽然能调用成功但是无法仿真实现功能
    发表于 07-27 19:56

    函数封装成使用的方法

    作者:Aki Li在项目开发过程中,开发者出于保护核心算法的目的,希望部分核心代码封装起来,使得其他使用者无法查看具体的代码实现细节,而不影响正常的调用。常见的思路是核心的
    发表于 11-07 08:05

    如何实现lib封装

    看到别人的程序里有lib一个文件,在MDK中双击打不开。这应该是个函数封装吧。如果做自己的函数封装
    发表于 10-23 06:44

    怎么封装函数库

    怎么封装函数库,只留一些回调函数和引脚定义,完整程序不让人看
    发表于 11-08 08:12

    如何将函数封装成库使用的方法介绍

    无法查看具体的代码实现细节,而不影响正常的调用。常见的思路是将核心的函数封装成库,下面将结合例程说明具体实现方法。 1.库的建立 1).
    的头像 发表于 01-12 16:32 4804次阅读
    如何将<b class='flag-5'>函数</b><b class='flag-5'>封装成</b>库使用的<b class='flag-5'>方法</b>介绍

    关于如何将函数封装成库使用的方法介绍

    关于如何将函数封装成库使用的方法介绍
    发表于 10-28 12:00 1次下载
    关于如何将<b class='flag-5'>函数</b><b class='flag-5'>封装成</b>库使用的<b class='flag-5'>方法</b>介绍

    关于如何将函数封装成库使用的方法介绍

    在项目开发过程中,开发者出于保护核心算法的目的,希望将部分核心代码封装起来,使得其他使用者无法查看具体的代码实现细节,而不影响正常的调用。常见的思路是将核心的函数封装成库,下面将结合例
    的头像 发表于 03-21 09:36 3060次阅读
    关于如何将<b class='flag-5'>函数</b><b class='flag-5'>封装成</b>库使用的<b class='flag-5'>方法</b>介绍