有一个由几个组件组成的大项目,以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。
问题在于断点。我不明白它们如何影响项目的工作,但在消除了所有断点并从头开始重组组件后,问题就消失了。
如果有人解释了这种行为的原因,我将不胜感激。