本篇参考资料:关于C语言中用Keil软件制作Lib库文件的几点经验
1.一个生成lib文件的工程可以调用这个工程中不存在的函数,只需要在.h文件中声明这些不存在函数的原型,然后在调用这个lib文件的工程中实现这些函数即可。由上可得出一个结论:生成lib文件的工程改成生成hex文件或者bin文件那么可能编译错误(找不到未声明函数的原型),但是如果是生成lib的可以编译成功。
2、制作LIB的一般步骤(只有一个C文件,不存在调用LIB工程外的函数):
(1)将此C文件添加至一个测试工程,生成HEX文件或者BIN文件
(2)将此文件内所有函数的功能全部测试通过
(3)新建一个工程,只添加此C文件和一些必要的H文件(例如使用的芯片的库文件),再添加一个H文件,此H文件里面将调用此LIB的所有函数、宏、变量做extern声明
(4)build工程即可,切记输出选择Create Library。
3、如果一个LIB工程里面有多个C文件,且需要调用LIB工程外部的函数时,建议步骤如下:
(1)将全部C文件添加至测试工程,生成HEX文件或者BIN文件
(2)将所有函数的功能全部测试通过
(3)新建一个工程,添加需要的C文件,在第一个H文件内声明LIB工程内使用的函数,第二个H文件内声明原型在工程内部,供工程外部调用的函数,在第三个H文件内声明原型在工程外部,供工程内调用的函数
(4)build工程,生成lib文
(5)在调用LIB文件的工程中include第二个和第三个H文件,实现第三个H文件内的所有函数,调用第二个H文件内的函数,第一个文件在LIB工程内使用即可,调用LIB文件的工程无需include。
4.头文件的作用:
(1)通过头文件来调用库功能。在很多场合,源代码不便(或不准)向用户公布,只要向用户提供头文件和二进制的库即可。用户只需要按照头文件中的接口声明来调用库功能,而不必关心接口怎么实现的。编译器会从库中提取相应的代码。
(2)头文件能加强类型安全检查。如果某个接口被实现或被使用时,其方式与头文件中的声明不一致,编译器就会指出错误,这一简单的规则能大大减轻程序员调试、改错的负担。
如果一个软件的头文件数目比较多(如超过十个),通常应将头文件和定义文件分别保存于不同的目录,以便于维护。例如可将头文件保存于include 目录,将定义文件保存于source 目录(可以是多级目录)。如果某些头文件是私有的,它不会被用户的程序直接引用,则没有必要公开其“声明”。为了加强信息隐藏,这些私有的头文件可以和定义文件存放于同一个目录。