使用QMake时可能延迟DLL加载?

Fra*_*eld 6 qt qmake visual-c++

在我的项目中,我有一组我想加载延迟的DLL,即首次使用而不是进程启动.这意味着我想对某些DLL(而不是Qt本身)使用MSVC链接器的/ DELAYLOAD标志(参见[1]以获得更多解释).原因是一些用户在DLL启动期间遇到崩溃(我们无法重现).以前的非Qt版本的软件没有这个问题,但它使用延迟加载,所以这可能会产生影响.

使用QMake,我发现无法延迟加载工作.有没有人知道如何将/ DELAYLOAD传递给msvc链接器,使用qmake功能绕过qmake?

[1] http://www.codeproject.com/KB/DLL/Delay_Loading_Dll.aspx

Mar*_*arc 4

修改.pro文件:

## Make delayed load possible. If your project is itself a DLL which uses xxx.dll, you
## also need to include this line in the applications that use your DLL.
LIBS += DelayImp.lib

## Specify that xxx.dll loading needs to be delayed
win32:CONFIG(release, debug|release) {
    QMAKE_LFLAGS_RELEASE += /DELAYLOAD:xxx.dll
} else:win32:CONFIG(debug, debug|release) {
    QMAKE_LFLAGS_DEBUG += /DELAYLOAD:xxx.dll
}
Run Code Online (Sandbox Code Playgroud)

我将 Qt5.1.1 与 MSVC 2012 一起使用,但根据 MS 的说法,这应该适用于 VC2005 及更高版本。