当前位置: 技术问答>linux和unix
linux动态链接库的问题
来源: 互联网 发布时间:2015-05-18
本文导语: //库代码: //编译后的文件名是dll.so #include int print() { printf("hello the world"); } //主程序: //编译后的文件名是testdll #include #include void *functionlib; void *function; int main() { functionlib=dlopen("dll.so",RTLD_LA...
//库代码:
//编译后的文件名是dll.so
#include
int print()
{
printf("hello the world");
}
//主程序:
//编译后的文件名是testdll
#include
#include
void *functionlib;
void *function;
int main()
{
functionlib=dlopen("dll.so",RTLD_LAZY);
function=dlsym(functionlib,"print");
}
可是在编译主程序的时候出现以下错误:
/tmp/ccwHkn92.o:In function 'main':
/tmp/ccwHkn92.o(.txt+0x1b):undefined reference to 'dlopen'
/tmp/ccwHkn92.o(.txt+0x1b):undefined reference to 'dlsym'
collect2: ld returned 1 exit status
这样的问题是什么导致的呢?如何解决?
谢谢了先
//编译后的文件名是dll.so
#include
int print()
{
printf("hello the world");
}
//主程序:
//编译后的文件名是testdll
#include
#include
void *functionlib;
void *function;
int main()
{
functionlib=dlopen("dll.so",RTLD_LAZY);
function=dlsym(functionlib,"print");
}
可是在编译主程序的时候出现以下错误:
/tmp/ccwHkn92.o:In function 'main':
/tmp/ccwHkn92.o(.txt+0x1b):undefined reference to 'dlopen'
/tmp/ccwHkn92.o(.txt+0x1b):undefined reference to 'dlsym'
collect2: ld returned 1 exit status
这样的问题是什么导致的呢?如何解决?
谢谢了先
|
gcc -rdynamic -o testdll testdll.c -ldl即可
|
如果你要显示打印你必须执行你的函数,而不是仅仅将其从动态库中取出
int main()
{
functionlib=dlopen("dll.so",RTLD_LAZY);
function=dlsym(functionlib,"print");
function();
}
int main()
{
functionlib=dlopen("dll.so",RTLD_LAZY);
function=dlsym(functionlib,"print");
function();
}