QLibrary加载so的注意事项

QLibrary加载so的注意事项_第1张图片

加载库时,QLibrary搜索在所有特别的系统库路径,除非文件名有一个绝对路径。


这句话说明了QLibrary的load()路径问题,倘若系统库已经存在这个运行库名称,那只会加载系统上面的那一个,所以要加载存在的运行库文件,就需要做两件事,一是运行库重命名,二是load配置的是绝对路径。在android的自动更新中,要求只更新so文件,这时候需要用到。

代码举例:

              QDir dir("./lib/libTestb.so");

        QString path = dir.absolutePath();
        QLibrary *m_li = NULL;
        m_li = new QLibrary(path);
        m_li->load();
        typedef int(*Test)(int a, int b);
        Test t = (Test)m_li->resolve("test");
        int m1;
        if(t){
        m1 = t(11,22);
        }






你可能感兴趣的:(QLibrary加载so的注意事项)