Keil的lib库函数的封装

KEIL封装lib库文件 keil lib库 阅读详情

在协同工作中,经常会有模块维护和代码封装的问题。把需要封装的代码打成一个lib无疑是一种很好的方式。

1.创建lib

创建一个lib很容易,只需要创建一个target,然后把需要封装的代码全部加进来,然后再Options of Target中选择Create Library,然后编译,因为是lib所以不需要链接,编译过了,你的lib就创建了。当然了,为了别人可以轻松的使用,请提供头文件支持哦。

2.使用lib

使用lib就更容易了,把lib和头文件加入你的工程,直接调用就是了。lib库会和你工程中其它编译后的obj一起链接,形成最后的目标文件。

3.注意事项

首先,Startup和中断处理程序不要封入LIB,这些程序会在链接的时候产生问题。具体的原因么,有点复杂,应该是中断程序的link机制有所不同的关系吧。

其次,Lib的文件要分的细一点,没有调用关系的两个函数不要放到同一个C文件中,因为LIB51在链接的时候是按模块来链接的,一个模块就对应一个C文件,假如链接器因为要使用你一个函数fA而引入了A模块,那么A模块中的另外的函数也会被引入,而另外的函数你又没有使用的话,那么就会引发Keil经典的UNCALLED FUNC的warning。这个warning在Keil的文档中说的好清楚了,我粘过来吧:

It is common practice during the development process to write but not call
additional functions.  While the compiler permits this without error, the
Linker/Locator does not treat this code casually because of the support for data
overlaying, and emits a warning message.
Interrupt functions are never called, they are invoked by the hardware.  An
uncalled routine is treated as a potential interrupt routine by the linker.  This
means that the function is assigned non-overlayable data space for its local
variables.  This quickly exhausts all available data memory (depending upon the
memory model used).
If you unexpectedly run out of memory, be sure to check for linker warnings
relating to uncalled or unused routines.  You can use the linker’s IXREF
directive to include a cross reference list in the linker map  (.M51)  file.

大意就是说,Keil的内存应用模式是指定地址的,也就是要根据调用关系来决定哪块地址可以被复用。对于这种没人调用的函数,Keil会认为是中断处理程序,并不能决定调用关系,所以此类uncalled函数的空间不能和其他的程序共享,也就是说,这函数用多少RAM,你就少多少RAM。那uncall多了会怎么样?----废话,当然是内存溢出了。

所以,lib的功能可以做的大而全,但是里面的模块一定要分的要多细,有多细,只有这样,你才能像在windows上用CRT一样舒服的使用LIB。

 

keil 封装lib 目录 1.创建lib 2、使用lib 3、注意事项 4、个人总结 在团队工作中,经常会有模块维护和代码封装的问题。把需要封装的代码打成一个lib无疑是一种很好的方式。 1.创建lib (1)将工程中不需要要打包的文件给移除 (2)选择输出.lib文件 (3)编译文件 (4)生成.lib文件,在output文件夹中找到生成的.lib文件 (5)总结 创建一个lib很容易,只需要创建一个target,然后把需要封装的代码全部加进来,然后再Options of ... 阅读详情

相关推荐

如何在keil中将关键函数打包生成lib库

基于合作的需要,需要我们将自己调通的代码奉献给团队或者提交给你的甲方。基于我们个人意愿是很不愿意的,毕竟那是我们辛辛苦苦写出来的,但是又不能不交,耽误项目进程。打开led工程项目,为了验证打包后是否成功,在led.c项目中添加一个sum_2函数,如下图所示,记得要在.h添加函数名,方便在主函数中调用测试。打开工程后发现led.c文件是叹号,找不到了,左击鼠标移除这个文件。点击品,找到刚刚新建的文件夹,双击名字,重命名为“dabao”首先删除led文件中的led.c文件,只保留.h文件。

2301_79275917的博客 1736

Keil MDK生成LIB库以及使用LIB库

Keil MDK生成LIB库以及使用LIB库 一.keil下lib静态库的使用具有以下优点: 1.封装源代码,对外不开放,提高保密性。 2.将标准功能函数封装成库,提高代码的复用性。 3.使用库开发,简化开发流程,提高开发效率。 4.系统调用库函数,提高执行效率。

热土程序园,利他愉己~ 4669

FIFO队列C实现和KEIL封装lib库文件(十二)

本文将介绍FIFO环形队列的软件实现方式,分为字节循环队列和块状循环队列,采用纯C编写,比较实用,适合学生和各工程师;紧接着再介绍了一种库生成方式,通过keil平台,将源代码文件封装成lib库文件,‌供开发者使用;这两种方式刚好可以将环形队列的软件代码,通过keil封装成lib库文件,方便大家日常使用。

weixin_47006346的博客 1785

Keil 5 中的代码模块化封装

在学习89C52时,当需要编写又臭又长的代码时,会使用到代码的模块化封装,

mjmmm的博客 4136

【版本管理】源代码封装成库Lib的方法

封装源代码成库lib

qq_35635374的博客 4059

Carla-编译CarlaUE4提示HoloLens.Automation项目缺少Windows程序集?

编译CarlaUE4提示HoloLens.Automation项目缺少Windows程序集?不妨看看这个!

DSK_981029的博客 2573

keil如何将文件封装成库文件

库文件生成

z1236464的博客 1274

VC Spyglass CDC实战:从TCL脚本到SDC约束的完整避坑指南

本文是一份针对数字IC验证工程师的VC Spyglass CDC实战指南。文章详细阐述了从TCL脚本环境搭建、SDC约束编写到典型CDC违规(如SETUP_PORT_UNCONSTRAINED)诊断与修复的完整流程,旨在帮助读者高效避坑,深入理解工具逻辑,从而完成可靠的时钟域交叉验证。

go5gopher的博客 383

关于Keil lib封装库反汇编成C语言的指南

关于Keil lib封装库反汇编成C语言的指南 【下载地址】关于Keillib封装库反汇编成C语言的指南 本项目提供了一份详细的指南,帮助开发者将Keil中的lib封装库文件反汇编成C语言代码。通过本指南,您将了解反汇编的意义与必要性,掌握常用反汇编工具的选择与使用方法,并跟随详细的步骤完成反汇编过程。此外,指南还包含了...

gitblog_06755的博客 634

某程token参数逆向分析

作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

weixin_73499887的博客 2883

Apollo control模块横向控制原理及核心代码逐行解析

看完这篇文章,你会对apollo横向控制有一个整体的概念

weixin_39199083的博客 2万+

keil和IAR中lib库文件的生成和使用

lib静态库的使用可以简化项目开发流程,提高开发效率,本文详细介绍了在keil和IAR环境下lib库的生成和使用。

tutu_hu的博客 1万+

CXL Virtual Hierarchy (VH) Enumeration理解

在 CXL 3.0 协议中,CXL Virtual Hierarchy (VH) Enumeration 是一种针对 CXL 虚拟层级(Virtual Hierarchy) 设计的设备枚举机制,它允许软件将物理连接的 CXL 设备抽象为多个逻辑层级(虚拟层级),从而实现更灵活的资源管理和拓扑扩展。与传统的 PCIe 枚举相比,CXL VH 枚举在协议特性、拓扑抽象和资源分配机制上有显著差异。本质:VH 是一个逻辑上的设备层级结构,可能与物理连接拓扑不同。

Summer的博客 1003

KEIL中高效封装C代码:从源码到LIB库的实战指南

本文详细介绍了在KEIL开发环境中将C语言源代码封装为LIB静态链接库的完整实战流程。通过从创建库工程、配置编译选项到实际应用集成的逐步指导,帮助开发者实现代码保护、提升编译效率与项目管理规范性,是嵌入式开发工程化的重要实践。

jenkins8butler的博客 799

手把手拆解:储能电站如何实现‘孤岛运行’与‘黑启动’?从SVPWM控制到无缝并网

本文深入解析储能电站的孤岛运行与黑启动技术,从SVPWM控制策略到电网重构实战。通过详细的三环控制架构和黑启动五阶段技术路线,展示储能电站在电网故障时如何快速切换为独立电压源并实现电网重建。文章还探讨了虚拟惯量补偿、多站协同控制等前沿技术,为电力系统应急恢复提供关键解决方案。

weixin_30509393的博客 305

高并发网络爬虫实践(欧赔、亚盘、大小指数数据爬取)

本文通过对一个实战化的高并发网络爬虫脚本进行深度模块化剖析,展示了如何构建一个兼具性能、健壮性和易用性的数据采集工具。核心设计思想总结模块化与单一职责: 每个函数都专注于解决一个特定问题,无论是网络请求、数据解析还是文件操作。并发与效率: 通过ThreadPoolExecutor实现了高效的并发抓取,极大缩短了总耗时。健壮性与容错: 强大的重试机制、细致的异常处理和线程安全的文件写入,保证了程序在复杂网络环境下的稳定运行。断点续传: 精心设计了进度记录与恢复机制,使得大规模抓取任务变得轻松可控。

猫敷雪 481

在KEIL RVMDK 下为单一C文件生成.LIB文件

在KEIL realview MDK下为单一C文件生成.LIB文件   查了一个下午,竟然没有一个网页完整的说清楚的这个问题,莫非太简单了大家不屑于说?看大多数说的都是简单地将整个工程转换成.LIB,在Project->Options for Target->Output下,

Grant的工作笔记 2万+

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

 本文主要介绍了checking OpenSSL library version… configure: error: OpenSSL >= 1.1.1 required (have “100020bf (OpenSSL 1.0.2k-fips 26 Jan 2017)”)解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 2万+

使用keil将代码封装成Lib库

(我这里创建了一个文件夹,把生成后的lib文件放进去)创建一个.h文件可以把我们代码中会调用的函数及注释放在里面,方便调用前进行查看函数的功能。(3)填写生成的lib库文件名称;(点击Select Folder For Objects,可以选择生成文件的路径,默认为Objects)1.创建一个空的工程,把你需要封装的文件添加进去。在上方添加.h文件的引用,即可使用lib库中的函数。4.项目使用,把这lib库和.h文件添加到工程里。这里我把两个文件放在一个文件中方便其他项目使用。(1)点击魔术棒打开设置;

weixin_44130800的博客 3546

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

KEIL中程序封装的实现

KEIL中程序封装的实现

挖到尽头 3670

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

KEIL中部分子程序封装为lib文件方法

有时我们想对自己的源码中某些关键程序不对外开放,这时可以将其封装成LIB格式文件,直接引用里面的函数而不显示源码。

KDXAXH的博客 756

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Keil对lib封装库反汇编成C语言指南

Keil对lib封装库反汇编成C语言指南 【下载地址】Keil对lib封装库反汇编成C语言指南 本仓库提供了一个名为“Keil对lib封装库反汇编成C语言.pdf”的资源文件。该文件详细介绍了如何使用Keil工具将lib封装库反汇编成C语言代码的过程。无论你是嵌入式开发新手还是经验丰富的工程师,这份指南都将为你提供宝贵的...

gitblog_06634的博客 1229

用Keil4封装lib库文件的方法:简化代码封装,保护知识产权

用Keil4封装lib库文件的方法:简化代码封装,保护知识产权 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 在软件开发领域,代码封装是一项重要的技术手段。它不仅可以帮助开发者保护自己的知识产权,还能简化代码的共享与复用。今天,我们将为您介绍一个实用的开源项目——用Keil4封装lib库文件的方法,这是一份详尽的教程,旨在帮助您掌握如何使用Keil4对代码进行封装,生...

gitblog_06792的博客 819

keil把源代码生成lib的方法

大家好,我是无际。 最近有学员问我,怎么把我们的程序加密? 其实程序加密有很多种,有烧录加密和源代码加密,今天我们先来介绍源代码加密。 我们一般接触最多的程序文件就是.c和.h为后缀名的文件。 不知道大家有没有看到过.lib为后缀名的文件,这种就是加密的源代码文件。 我们用keil开发工具就可以把我们的.c文件加密成这种.lib文件。 这样能达到以下目的: 1.不想让别人看到自己写的源代码,同时又想让他使用你的程序功能。 一般很多芯片原厂就是这样干的,比如说TI的蓝牙和Zigbee协议栈,虽

无际单片机编程 5372
上一篇: C++中的异常处理(求教:catch中的向上类行转化)
下一篇: 嵌入式编译器常用输出格式--Motorola S-records(S19文件)
邹德强
博客等级 码龄24年 226粉丝 44原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值