首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Linux c++错误:未定义对'dlopen‘的引用

Linux c++错误:未定义对'dlopen‘的引用
EN

Stack Overflow用户
提问于 2009-06-05 15:49:59
回答 7查看 204.4K关注 0票数 179

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

代码语言:javascript
复制
undefined reference to 'dlopen' 

你知道解决方案吗?

下面是我的代码:

代码语言:javascript
复制
#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);
}
EN

回答 7

Stack Overflow用户

发布于 2014-04-11 02:24:45

@Masci是正确的,但如果您使用C(和gcc编译器),请考虑到这不起作用:

代码语言:javascript
复制
gcc -ldl dlopentest.c

但这确实是:

代码语言:javascript
复制
gcc dlopentest.c -ldl

我花了点时间才弄明白...

票数 90
EN

Stack Overflow用户

发布于 2019-03-28 05:31:12

我在使用CMake编译我的项目时发现了同样的问题。

描述here的解决方案工作起来很棒,只需将${CMAKE_DL_LIBS}添加到target_link_libraries()调用中

票数 12
EN

Stack Overflow用户

发布于 2014-07-06 18:28:45

这个话题很老了,但我今天在编译cegui 0.7.1 (openVibe先决条件)时遇到了同样的问题。

对我起作用的是在Makefile中设置:LDFLAGS="-Wl,--no-as-needed"

我也尝试过用于LDFLAGS-ldl,但没有效果。

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

https://stackoverflow.com/questions/956640

复制
相关文章

相似问题

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