QLibrary 冻结调用加载方法

Posted

技术标签:

【中文标题】QLibrary 冻结调用加载方法【英文标题】:QLibrary freezes on call load method 【发布时间】:2019-03-26 09:58:18 【问题描述】:

有一个大项目,由几个组件组成,以 dll 的形式呈现。在一个组件中,我使用QLibrary 来调用代码。以前,一切正常,加载了 dll 并且一切正常,但是,在对 dll 代码进行更改并重新编译后,在其中一次启动时,当我调用 load 方法时,程序只是挂起。

我试图清理整个项目并从头开始重建它,但是当我调用boot 方法时,执行不断停止。它没有给出任何错误。 isLibrary,在加载前调用,确认库选择正确。

void libLoad( QLibrary &lib, const QString &fileName ) 

    lib.setFileName( fileName + dllVersionString );

    auto name = lib.fileName( );    //just to make sure the name is correct
    auto isLibrary = lib.isLibrary( fileName + dllVersionString );  //just to make sure dll is found

    if ((lib).load( ))  //work stops here
        qDebug( ) << QString( "library " + lib.fileName( ) + " loaded" );
     else 
        throw QString( QString::fromLocal8Bit( "Failed to load library " ) + lib.fileName( ));
    

问题仅在调试时出现。我使用 Qt Creator 和 msvc。

【问题讨论】:

欢迎来到 Stack Overflow!请分享您的代码的相关部分。没有它,我们将无法为您提供帮助。 【参考方案1】:

问题出在断点处。我不明白它们如何影响项目的工作,但是在消除所有断点并从头开始重组组件后,问题就消失了。

如果有人解释这种行为的原因,我将不胜感激。

【讨论】:

以上是关于QLibrary 冻结调用加载方法的主要内容,如果未能解决你的问题,请参考以下文章

Qt动态连接库/静态连接库创建与使用,QLibrary动态加载库

Qlibrary 使用碳化物/诺基亚模拟器卸载 dll

QLibrary Visual C++ 全局变量

Qt Dll总结——创建及使用Qt的Dll(转载)

qt加载dll

类 TESTDLL_LIBSHARED_EXPORT TestDLL_lib