dlopen 加载一个共享so库资源

一.先生成一个共享so库文件

// example.c
#include <stdio.h>

void hello() {
    printf("Hello from the shared library!\n");
}

void test(int a)
{
    printf("Test from the shared library! parameter is %d\n",a);
}

用命令生成so库文件

#编译共享库:

gcc -shared -fPIC -o libexample.so example.c

就会在目录下生成一个libexample.so文件

二.在主方法中执行该动态so库调用方法

int main() {

    // ---- 加载动态so库文件
    /**
     *  void* dlopen(const char* filename, int flag);
        filename:要加载的共享库的路径(可以是绝对路径或相对路径)。如果值为 NULL,表示加载主程序(通常不使用该选项)。
        flag:用于指定加载共享库的方式,可以是以下的一个或多个标志的组合:
        RTLD_LAZY:延迟加载,即只有在调用符号时才进行解析。
        RTLD_NOW:立即加载,即在加载时解析所有符号。
        RTLD_GLOBAL:使库中的符号在其他共享库中可见(默认是 RTLD_LOCAL,即符号仅在当前库内部可见)。
        RTLD_LOCAL:符号只对当前共享库可见。
     */
    void* handle = dlopen("/demo_c/libexample.so", RTLD_LAZY);
    /**
     * 返回值:
        成功时,dlopen 返回一个非 NULL 的指针,指向已加载的共享库的句柄。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值