首先编写一个hello.c
#include <stdio.h>
int hello()
{
printf("hello lynne!\n");
}
编译命令:gcc -c hello.c,生成hello.o文件
编译命令:gcc -shared -o libtest.so hello.o得到libtest.so动态连接库文件
如果是c++文件,编译成 .so库
g++ -O -fPIC -shared -o libcsdn.so csdn.h csdn.cpp
qt中移植使用三方库的方法一
创建一个qt空工程,右键add new一个mian源文件
#include <stdio.h>
#include <QLibrary>
int main(int argc, char *argv[])
{
QLibrary *m_li = NULL;
//加载动态库
//注意库要给路径否则加载不成功,libhello.so放在当前工程的目录下,所以路径为./
m_li = new QLibrary("./libhello.so");
m_li->load();
if (!m_li->isLoaded())
{
printf("failed!\n");
return 0;
}
//定义函数指针
typedef void (*Fun)();
//resolve得到库中函数地址
Fun hello = (Fun)m_li->resolve("hello");
if (hello)
{
hello();
}
//卸载库
m_li->unload();
return 0;
}
运行后输出
hello lynne!
方法二
在 .pro 工程文件中
INCLUDEPATH +=$$PWD 头文件路径
LIBS += 移植过来的路经
$$是相对路径,相对于 build-nameProject-Desktop_Qt*-Debug的目录下
然后使用是直接包含头文件即可使用