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

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

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

g++ main.cpp -ldl -o myprog

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

我的问题是:如何在Qt Creator中编译main.cpp?
Qt Creator报告相同的错误: undefined reference dlopen()

我尝试将-ldl直接添加到Makefile中的标志(CFLAGS,CXXFLAGS,LFLAGS)中,但无济于事。 (是否将标志插入到-ldl不起作用的源文件之前?)

这是我的main.cpp:
#include <dlfcn.h>
int main()
{

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

   return 0;
}

我在Linux上使用Qt Creator 2.4.1

非常感谢 :)

最佳答案

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

LIBS += -ldl

09-04 18:03