热度 13
2012-2-21 15:22
2288 次阅读|
0 个评论
silentmj原创文章,转载请保留署名,谢谢。 下载本文示例工程 在ICCAVR环境中,我们可以通过使用ilibw.exe工具来制作我们自己的函数库(需要是注册版的才行),详细的操作方法可以参见:ICCAVR所带帮助文档中TOOL REFRENCES部分Librarian一节。 每次都需要到命令行方式下输入好几个命令未免不太方便,好在新的7.22版本中已经可以直接在IDE中完成整个操作了。下面就以7.22版为例说明详细的操作过程: 1)库工程(AVRLib) 1.1)库工程的内容 库工程包括2个文件lib.c和lib.h,其中lib.c文件的内容: int Fn( int a, int b) { //我们不希望算法(a+b),被轻易的看到 return a+b; } lib.h文件的内容: int Fn( int a, int b); 1.2)库文件的生成 只要在编译器设置中将 Project Type 选为 Library 即可生成库文件。如果再选中 Copy output to default LIB directory 那么生成库文件之后ICCAVR IDE会自动将生成的lib文件复制到默认的LIB目录下,在笔者的机器上这个目录是 c:\iccv7avr\lib 而我们的库文件的名称则为(lib + 工程名 + .a) libAVRLIB.a 2)使用库的工程(AVRLibUser) 2.1)使用库的工程的内容 使用库的工程,包含2个文件,main.c和lib.h,其中lib.h和上一步中内容是完全一样的,而main.c文件的内容为: #include stdio.h #include "lib.h" void main( void ) { Fn1(1,2); } 2.2)使用上一步生成的库文件 要使用库,需要依次: a)把库安装到本机的LIB目录中,本例中是将 libAVRLIB.a 复制到 c:\iccv7avr\lib 之中 b)将库文件的头文件添加到工程中,本例中是lib.h 注意: a)显然,使用库时的编译选项需要和生成库时的设置一致。 b)使用时输入的库名称为:库文件名,除开lib和后缀名剩下的部分。例如库文件名为libAVRLIB.a,使用时则应该填入AVRLIB 3)总结 其实这种方法只能起到一定程度的保护作用,对于一个意志坚定的分析者来说仍然不是很困难。不过这样已经足够对付一般情况了,不是么?