雨亦奇
2002-3-13 11:09:55要想高效地应用LINUX动态链接库(尤其是用户自己编写的),需要做以下工作
| 在《LINUX下动态链接库的创建和应用》一文中,我介绍了LINUX动态链接库的基本知识.其要点是:用户根据实际情况需要,利用dlopen,dlsym,dlclose等动态链接库操作函数,装入指定的动态链接库中指定的函数,然后加以执行.程式中使用很少的动态函数时,这样的做法尚可.假如程式需要调用大量的动态函数,那么采用这样的编程手段将是很繁复的,所以我们必须使用一种更为聪明的办法,以减少代码量,提高工作效率.这就是现在我要举例介绍的《LINUX动态链接库高级应用》. |
| 注:本文举的例子类似上篇文章,只是文档的内容已做相应修改,裁减了不少.示例程式ady.c和两个动态函数的源程式getdate.c和gettime.c仅修改了头文档的名字,其内容不再列出.本文使用头文档为adatetime.h. |
| 要想高效地应用LINUX动态链接库(尤其是用户自己编写的),需要做以下工作: |
| 一、编写合格的动态链接库头文档 |
| C语言的头文档,可供一个或多个程式引用,里面一般定义程式所需的常量,自定义类型及函数原型说明等.其中的函数原型说明,则供编译器检查语法,用于排除引用参数时类型不一致的错误.只有编写合格的动态链接库头文档,程式员才能正确使用动态链接库内的函数. |
| 动态链接库头文档要采用C语言标准格式,其中的动态函数原型定义,不必象上文介绍的那样用(*动态函数名)的描述形式.请看下面的例子:(每行开始的数字为所在行行号,为笔者添加,供注解使用) |
| 1 /* adatetime.h : 纵横软件制作中央雨亦奇(zhsoft@371.net)编写, 2002-03-06. */ |
| 2 |
| 3 #ifndef __DATETIME_H |
| 4 |
| 5 #define __DATETIME_H |
| 6 |
| 7 /* 日期结构 */ |
| 8 typedef struct |
| 9 { |
| 10 int year; |
| 11 int mon; |
| 12 int day; |
| 13 }DATETYPE; |
| 14 |
| 15 /* 时间结构 */ |
| 16 typedef struct |
| 17 { |
| 18 char hour; |
| 19 char min; |
| 20 char sec; |
| 21 }TIMETYPE; |
| 22 |
| 23 int getdate(DATETYPE *d); /* 取当前日期 */ |
| 24 int gettime(TIMETYPE *t); /* 取当前时间 */ |
| 25 |
| 26 #endif |
| 27 |




