重工电子论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 5761|回复: 3
打印 上一主题 下一主题

用keil封装LIB教程

[复制链接]

15

主题

24

帖子

379

积分

学生管理组

Rank: 8Rank: 8

积分
379
跳转到指定楼层
楼主
发表于 2017-5-24 23:43:15 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 刘鑫-15电子 于 2017-5-24 23:43 编辑

之前强哥叫我把我们写的车载的源码进行一个封装,然后发给客户,在保证客户能够进行简单的应用型修改的同时又能保证我们的核心代码不被剽窃,现在最简单的方式就是把我们的核心代码进行封装,然后留出接口来供客户调用。当然,这种做法还有一个很好的地方就是,我们在做程序移植的时候,可以更加方便的给人应用。但是,对于实验室的各位来说,没有必要把自己的源代码藏得深深的,大家互相学习才能取得进步,实验室也能够把写得好的程序一代一代传承下去,在此,再次致敬无私的张进科学长和焦鹏辉学长。
下面我来说一下怎么用keil来进行LIB的封装。
首先,我以LED的程序为例,把LED.c进行一个封装。
这是一个流水灯程序,现在我们要把LED.c封装起来


首先,为方便管理,我们在根目录创建一个文件夹,我喜欢叫“DRIVE”.你们随意,反正要看起来要专业一点。


然后回到我们的工程界面。创建一个新的group,重命名“LED_DRIVE”


接下来,我们要正式进行封装了。为了实现单独的LED.C的封装而不牵扯到其他c文件,我们需要做一个简单的操作。右击其他的不用封装的group  :options for group...->properties
取消include in build 的√  ,使其分组的代码不被编译。(之后要手动还原)

最后每一个不被编译的group会出现红色减号
然后我们把led.c添加进我们的分组

点击options for target ->output->勾选create Library...    然后更改生成的LIB的文件名,我改为"LED_DRIVE".

选择输出路径。也就是点击SelectFolder for Objects,(也可以不选择,默认的为OBJ文件夹),这里我们就不选择吧。点击编译。。。
然后我们在OBJ(或者你手动选择的路径下找到lib文件)


然后我们将它剪切到"DRIVE"文件夹下。
回到原本led.c的目录,将LED.h剪切到"DRIVE"文件夹下。


回到工程界面,移除原本的LED.c文件(全部移除,无论是LED_DRIVE里面的还是原本HARWARE里面的,都移除),将头文件的路径改为“DRIVE”.


然后在LED_DRIVE里添加“LED_DRIVE.lib”   记住,如果在DRIVE路径下找不到lib文件,一定要记得将文件类型选择为“所有文件”或者“lib”文件。


点击ADD.

然后,接下来这一步很关键,就是要还原之前被取消的√。
options for group...->properties
重新勾上include in build 的√  


然后,编译。。。。整个过程就完成了。我们的LED.c就被我们封装成了lib。
我们这时候去点LED_Init()的definetion ,就进不去了。但是只要这个函数再.h文件里面有声明,其他c文件包含“led.h”是可以调用.ilb的函数的。



十分完美的保证了我们LED.c的文件源代码的安全,不被其他人看到。




分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

287

主题

668

帖子

5642

积分

学生管理组

Rank: 8Rank: 8

积分
5642
沙发
发表于 2017-5-25 19:19:51 | 只看该作者
可以。。。。。。
回复

使用道具 举报

20

主题

74

帖子

382

积分

学生管理组

Rank: 8Rank: 8

积分
382
板凳
发表于 2017-8-5 22:39:55 | 只看该作者
感谢各位学长
回复 支持 反对

使用道具 举报

15

主题

24

帖子

379

积分

学生管理组

Rank: 8Rank: 8

积分
379
地板
 楼主| 发表于 2017-8-7 11:46:14 | 只看该作者

顾老师,你这装嫩的操作过分了哈。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|cqutlab ( 渝ICP备15004556号

GMT+8, 2024-5-6 00:45 , Processed in 0.184650 second(s), 30 queries .

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表