动态装载示例:
/*********************************************************************************************************
**
** 中国软件开源组织
**
** 嵌入式实时操作系统
**
** SylixOS(TM)
**
** Copyright All Rights Reserved
**
**--------------文件信息--------------------------------------------------------------------------------
**
** 文 件 名: ***
**
** 创 建 人: ***
**
** 文件创建日期: ** 年 ** 月 ** 日
**
** 描 述: 加载动态库示例的 app 程序
*********************************************************************************************************/
#include <stdio.h>
#include <dlfcn.h>
/*********************************************************************************************************
** 函数名称: main
** 功能描述: 主函数
** 输 入 : argc,argv
** 输 出 : ERROR
** 全局变量:
** 调用模块:
*********************************************************************************************************/
int main (int argc, char *argv[])
{
void *so_handler;
void (*sub_fun)();
fprintf(stdout, "Hello World!\n");
so_handler = dlopen("libdltest.so", RTLD_GLOBAL);
if (!so_handler) {
fprintf(stderr, "%s \n",dlerror());
return (-1);
}
sub_fun = dlsym(so_handler, "lib_func_test");
if (!sub_fun) {
fprintf(stderr, "%s \n",dlerror());
return (-2);
}
sub_fun();
dlclose(so_handler);
return (0);
}
/*********************************************************************************************************
END
*********************************************************************************************************/
dltest动态库文件内容:
/*********************************************************************************************************
**
** 中国软件开源组织
**
** 嵌入式实时操作系统
**
** SylixOS(TM)
**
** Copyright All Rights Reserved
**
**--------------文件信息--------------------------------------------------------------------------------
**
** 文 件 名: ***
**
** 创 建 人: ***
**
** 文件创建日期: ** 年 ** 月 ** 日
**
** 描 述: 加载动态库示例的动态链接库程序
*********************************************************************************************************/
#include <stdio.h>
/*********************************************************************************************************
** 函数名称: lib_func_test
** 功能描述: 用于 app 程序调用的库函数
** 输 入 : NONE
** 输 出 : NONE
** 全局变量:
** 调用模块:
*********************************************************************************************************/
void lib_func_test (void)
{
fprintf(stdout, "hello library lib_func_test() run!\n");
}
/*********************************************************************************************************
END
*********************************************************************************************************/
运行结果: