qt 动态链接库(.so)使用举例(linux)

时间:2022-04-17 06:54:06

首先编写一个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动态连接库文件

正题开始:

创建一个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!

 代码实例下载:http://download.csdn.net/detail/wanglin754/3941810