Qt Creator/Linux:为动态库设置编译器/链接器选项-ldl

Tom*_*om 4 c++ linux qt dynamic compiler-flags

我全都用Google搜索了!感谢任何可以帮助我的人......

我已经构建了test.so并希望使用dlfcn.h中定义的dlopen(),dlsym()等动态调用它

可以在命令行上编译我的调用程序(main.cpp)而不会出错

g++ main.cpp -ldl -o myprog
Run Code Online (Sandbox Code Playgroud)

没有-ldl开关,我得到错误:undefined reference dlopen().此外,如果-ldl开关未放置在g ++参数列表中的源文件之后,那么我会得到相同的错误.

我的问题是:如何在Qt Creator中编译main.cpp?Qt Creator报告相同的错误:未定义的引用dlopen()

我试过直接将-ldl对Makefile(CFLAGS,CXXFLAGS,LFLAGS),但无济于事标志.(也许在源文件之前插入标志,其中-ldl不起作用?)

这是我的main.cpp:

#include <dlfcn.h>
int main()
{

   void* handle = dlopen("./test.so", RTLD_LAZY);

   return 0;
}
Run Code Online (Sandbox Code Playgroud)

我在linux上使用Qt Creator 2.4.1

非常感谢 :)

Jas*_*zun 8

在您的project_name.pro文件中,您应该LIBS像这样添加到变量:

LIBS += -ldl
Run Code Online (Sandbox Code Playgroud)