首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dlopen/dlsym:错误获取函数指针

dlopen/dlsym:错误获取函数指针
EN

Stack Overflow用户
提问于 2014-03-21 14:06:52
回答 1查看 5.1K关注 0票数 2

我试图使用dlopen和dlsym来获得函数指针,但是我无法使它正常工作。它在尝试执行dlsym调用时失败。以下是我的密码。

有什么帮助吗?

代码语言:javascript
复制
#include <dlfcn.h>
#include <stdio.h>
#include <stdlib.h>

int test() {
    printf("%s", "test()");
    return 123;
}

int main() {
    char * functionname = "test";
    void* handle = dlopen(NULL,RTLD_LAZY|RTLD_GLOBAL);
    if (!handle) {
        fprintf(stderr, "Couldn't open handle: %s\n",
            dlerror());
        exit(1);
    }

    int (*fun)() = (int (*)())dlsym(handle, functionname);
    if (fun == NULL) { 
        fprintf(stderr, "Couldn't find function: %s\n",functionname); 
        exit(1);
    }
    int a = fun();
    printf("result: %d \n", a);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-03-21 14:59:46

您可能需要指定链接器才能将符号导出为动态符号。对于gcc,你必须使用-rdynamic

您可以使用objdump -T检查导出的动态符号。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22561108

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档