dlopen系列函数的使用
  llt0tXqeaug8 2023年11月19日 18 0

这个程序将加载libtest.so共享库,并使用dlsym函数获取add函数的地址,然后调用add函数,最后关闭共享库。


#include <stdio.h>




int add(int a,int b){
    return a+b;
}


int fun() {


printf("ADB\n");
}

保存为libtest.c 

编译

gcc -shared -o libtest.so libtest.c

编写一个使用dlopen系列函数的C程序,比如main.c:

// main.c
#include <stdio.h>
#include <dlfcn.h>


int main() {
    // 打开共享库
    void* handle = dlopen("./libtest.so", RTLD_LAZY);


    if (!handle) {
        fprintf(stderr, "Error: %s\n", dlerror());
        return 1;
    }


    // 获取add函数的地址
    typedef int (*AddFunction)(int, int);
    AddFunction add = (AddFunction)dlsym(handle, "add");


    if (!add) {
        fprintf(stderr, "Error: %s\n", dlerror());
        dlclose(handle);
        return 1;
    }


    // 使用add函数
    int result = add(3, 4);
    printf("Result: %d\n", result);


    // 关闭共享库
    dlclose(handle);


    return 0;
}


编译

gcc -o main main.c


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月19日 0

暂无评论

推荐阅读
llt0tXqeaug8