先制作个简单的动态链接库,再在Qt里面加载它。
【制作动态链接库】
先编写一个hello.c
1 #include <stdio.h>
2 int hello()
3 {
4 printf("hello world!\n");
5 }
在Linux下编译,生成hello.o:
gcc -c hello.c
编译成动态链接库libhello.so(注意:Linux下的动态链接库以lib开始命名):
gcc -shared -o libhello.so hello.o
【加载动态链接库】
在Qt中加载libhello.so,先创建一个空的Qt工程,添加新文件main.c,内容如下:
#include <stdio.h>
#include <QLibrary>
int main(int argc, char *argv[])
{
QLibrary *hello_lib = NULL;
//写清楚库的路径,如果放在当前工程的目录下,路径为./libhello.so
hello_lib = new QLibrary("/home/libhello.so");
//加载动态库
hello_lib->load();
if (!hello_lib->isLoaded())
{
printf("load libhello.so failed!\n");
return 0;
}
//定义函数指针
typedef void (*Fun)();
//resolve得到库中函数地址
Fun hello = (Fun)hello_lib->resolve("hello");
if (hello)
{
hello();
}
//卸载库
hello_lib->unload();
return 0;
}
运行后输出:hello world!
还有一种方法:主程序在编译的时候加上-L. -llibxxx.so