SylixOS --- 动态装载示例

本文提供了一个使用dlopen和dlsym函数加载动态库libdltest.so的C语言示例程序。在main函数中,程序成功打开库并调用了lib_func_test函数,该函数在动态库中定义并打印出'hello library lib_func_test() run!'。运行结果展示了动态装载的完整流程。
摘要由CSDN通过智能技术生成

动态装载示例:

/*********************************************************************************************************
**
**                                    中国软件开源组织
**
**                                   嵌入式实时操作系统
**
**                                       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
*********************************************************************************************************/

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值