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

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

    关注

    126

    文章

    7753

    浏览量

    142668
  • 函数
    +关注

    关注

    3

    文章

    4299

    浏览量

    62374
收藏 人收藏

    评论

    相关推荐

    静态封装成python模块的方法

    很多硬件厂商的底层设备驱动都是以的形式提供给开发者,有的是动态,有的是静态。开发上层应用,最快速便捷的方式当然还是用 python,对于动态,可以用 python 的 ctyp
    发表于 07-13 15:24 514次阅读

    动态封装成python模块的方法

    之前的文章 静态封装成 python 模块中讲解了如何静态封装成 python 模块,静
    发表于 07-13 15:24 615次阅读

    有没有人知道怎么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

    怎么封装函数库

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

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

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

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

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

    c语言max函数在哪个

    C语言的max函数并不属于标准C,它通常是由程序员自己编写的一个宏定义。max函数用于比较两个数的大小,返回较大的数值。 为了提供更多详实的信息,下面详细介绍C语言中max
    的头像 发表于 11-22 10:18 3290次阅读