Linux c 错误:未定义对“dlopen”的引用

新手上路,请多包涵

我使用 C++ (Eclipse) 在 Linux 中工作,并且想使用一个库。 Eclipse 向我显示一个错误:

 undefined reference to 'dlopen'

你知道解决办法吗?

这是我的代码:

 #include <stdlib.h>
#include <stdio.h>
#include <dlfcn.h>

int main(int argc, char **argv) {
    void *handle;
    double (*desk)(char*);
    char *error;

    handle = dlopen ("/lib/CEDD_LIB.so.6", RTLD_LAZY);
    if (!handle) {
        fputs (dlerror(), stderr);
        exit(1);
    }

    desk= dlsym(handle, "Apply");

    if ((error = dlerror()) != NULL)  {
        fputs(error, stderr);
        exit(1);
    }

    dlclose(handle);
}

原文由 user101375 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.6k
2 个回答

您必须链接到 libdl,添加

-ldl

到您的链接器选项

原文由 Masci 发布,翻译遵循 CC BY-SA 2.5 许可协议

在 GNU 工具链的早期版本(~2.7)中,glibc 没有链接加载器(dlopen 和 dlsym 函数)的直接接口,因此您必须在编译时提供 -ldl(libdl)。使用最新的 glibc 版本,您不必再这样做了。只需包含 就可以了。

原文由 Gopesh Bharadwaj 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题