QPluginLoader:自定义插件(带有依赖项)无法在Qt中加载

时间:2014-09-27 15:14:22

标签: qt shared-libraries ldd log4qt

我正在使用QPluginLoader使用Qt插件框架构建QT应用程序。

我已经构建了一个插件,但框架无法加载插件。我的插件依赖于第三方shlib(log4qt)。

文件已正确识别,但加载文件失败(这立即让我怀疑缺少依赖项)。

我在shlib上运行ldd,在输出中,这是唯一丢失的文件:

  

liblog4qt.so.1 =>找不到

我已尝试以下方法解决问题:

  1. 使用QApplication :: addtLibraryPath(“liblog4qt。*的路径”)
  2. 编辑/etc/ld.conf以手动添加库位置和刷新缓存
  3. 将所有liblog4qt *文件复制到我的插件目录
  4. 以上所有内容与巧克力防火手一样多用。

    以下是我加载插件的方法。这里没什么不合时宜的......

    // Private methods
    void MyApp::loadPlugins()
    {
        //QString path = QApplication::applicationDirPath();
    
        QDir plugins_dir(".");
    
    #if defined(Q_OS_WIN) || defined(Q_OS_MAC)
        QString pdirname = plugins_dir.dirName().toLower();
    
        #if defined(Q_OS_WIN)
        if (dirname == "debug") || (dirname="release")
            plugins_dir.cdUp();
    
        #elif defined(Q_OS_MAC)
        if (dirname == "macos")
        {
            plugins_dir.cdUp();
            plugins_dir.cdUp();
            plugins_dir.cdUp();
        }
        #endif
    #endif
    
        plugins_dir.cd("bin/plugins");
    
        foreach(QString filename, plugins_dir.entryList(QDir::Files))
        {
            qDebug() << "Filename: " << filename;
    
            if (!filename.toLower().contains("plugin"))
                continue;
    
            qDebug() << "Attempting to load: " << plugins_dir.absoluteFilePath(filename);
    
            QPluginLoader plugin_loader(plugins_dir.absoluteFilePath(filename));
    
            QString problem = plugin_loader.errorString();
            qDebug() <<  "Plugin load problem: " << problem;
    
            QObject * plugin = plugin_loader.instance();
    
            if (plugin)
            {
                PluginInterface * iplugin = qobject_cast<PluginInterface *>(plugin);
    
                if (iplugin) {
                    /* do something useful */
                }
            }
        }
    }
    

    这是控制台输出的(相关部分):

    14-09-27 15:50:42.SSS [DEBUG] Qt: - Attempting to load:  "/path/to//main/bin/plugins/libplugin001.so" 
    14-09-27 15:51:33.SSS [DEBUG] Qt: - Plugin load problem:  "Unknown error" 
    14-09-27 15:51:53.SSS [DEBUG] Qt: - Attempting to load:  "/path/to//main/bin/plugins/libplugin001.so.1" 
    14-09-27 15:51:53.SSS [DEBUG] Qt: - Plugin load problem:  "Unknown error" 
    14-09-27 15:51:55.SSS [DEBUG] Qt: - Attempting to load:  "/path/to//main/bin/plugins/libplugin001.so.1.0" 
    14-09-27 15:51:55.SSS [DEBUG] Qt: - Plugin load problem:  "Unknown error" 
    14-09-27 15:51:57.SSS [DEBUG] Qt: - Attempting to load:  "/path/to//main/bin/plugins/libplugin001.so.1.0.0" 
    14-09-27 15:51:57.SSS [DEBUG] Qt: - Plugin load problem:  "Unknown error" 
    

    有谁知道为什么我的插件库没有加载?

    [[其他信息]]

    • 操作系统:Ubuntu 12.0.4 LTS
    • gcc:4.6.3
    • QT:4.8.1
    • QT Creator:2.4.1

0 个答案:

没有答案