上篇文章呈现了linux下动态库的一个简单实现,其接口按通用的方式导出,测试程序可以直接调用,本篇展现一个导出函数列表的方式,可以通过函数列表实现对接口的调用
头文件
/*
@ File Name: calc.h
@ Author: hw
@ Mail: feiyelove@163.com
@ Created Time: 2015-07-01 14:42:00
*/
#ifndef _CALC_H_
#define _CALC_H_
#ifdef __cplusplus
extern "C"
{
#endif
int add(int a, int b);
int sub(int a, int b);
typedef struct _CALC_FUNCLIST {
int version;
int (*fnadd)(int a, int b);
int (*fnsub)(int a, int b);
}CALC_FUNCLIST;
typedef CALC_FUNCLIST* CALC_FUNCLIST_PTR;
typedef CALC_FUNCLIST_PTR* CALC_FUNCLIST_PTR_PTR;
int GetFunclist(CALC_FUNCLIST_PTR_PTR ppFuncList);
typedef void (*GET_FUNCLIST_PTR)(CALC_FUNCLIST_PTR_PTR ppFuncList);
#ifdef __cplusplus
}
#endif
#endif
源文件
/*
@ File Name: calc.c
@ Author: hw
@ Mail: feiyelove@163.com
@ Created Time: 2015-07-01 14:39:26
*/
#include "calc.h"
#ifdef __cplusplus
extern "C"
{
#endif
int add(