我创建了简单的c++应用程序。我可以编译它,并且工作正常。但是现在我需要动态地加载库,并且已经在项目中添加了dlfnc.h并添加了更多代码:
#include <iostream>
#include <dlfcn.h>
void *mylib;
int eret;
using namespace std;
int main() {
mylib = dlopen("mylib.so", RTLD_LOCAL | RTLD_LAZY);
eret = dlclose(mylib);
cout << "!!!Hello World!!!" << endl; // prints !!!Hello World!!!
return 0;
}
编译:
myname@ubuntu:~/workspace/LinuxGcc/src$ g++ LinuxGcc.cpp
并得到编译错误:
/tmp/ccxTLiGY.o: In function `main':
LinuxGcc.cpp:(.text+0xf): undefined reference to `dlopen'
LinuxGcc.cpp:(.text+0x25): undefined reference to `dlclose'
collect2: error: ld returned 1 exit status
dlfcn.h
存在于/usr/include/
中问题在哪里?
最佳答案
dlopen(3):
所以
g++ LinuxGcc.cpp -ldl
会好的。