Qt应用程序找不到第三方DLL并崩溃

时间:2018-09-18 22:52:38

标签: c++ qt

我试图在QT中构建​​一个使用libmodbus库的应用程序。我正在使用MinGW 5.3(Windows 7)。该应用程序将正确生成,但是在尝试运行时会崩溃。调试消息显示:

  

在启动程序退出时,代码为0xc0000135

如果我双击创建的可执行文件,则显示错误消息:

  

libmodbus-5.dll丢失

从我的计算机上。

Libmodbus是使用相同的编译器构建的。包含文件位于../../codelibrary/MinGW63/libmodbus-master/src中,链接程序文件位于../../codelibrary/QtMinGW53/libmodbus-master/src/.libs中(.libs文件夹同时具有libmodbus.dll.alibmodbus-5.dll)。

如果使用Qt的第三方库向导添加该库,那么我的.pro文件中将得到以下内容:

win32: LIBS += -L$$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src/.libs/ -llibmodbus.dll

INCLUDEPATH += $$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src
DEPENDPATH += $$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src

win32:!win32-g++: PRE_TARGETDEPS += $$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src/.libs/libmodbus.dll.lib
else:win32-g++: PRE_TARGETDEPS += $$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src/.libs/liblibmodbus.dll.a

这给了我错误:

  

-1:错误:'debug \ QTRosemount.exe'不需要目标'../../codelibrary/MinGW63/libmodbus-master/src/.libs/liblibmodbus.dll.a'的规则。停止。

然后我尝试将.pro文件更改为:

LIBS += -L$$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src/.libs/libmodbus-5.dll

INCLUDEPATH += $$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src
DEPENDPATH += $$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src

PRE_TARGETDEPS += $$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src/.libs/libmodbus.dll.a

这是当它编译时没有错误并立即崩溃,代码0xc0000135和丢失的libmodbus-5.dll。我尝试了.pro路径的许多变体,都遇到了同样的错误。

注意:我已经能够使用此库在Codeblocks中运行控制台应用程序,不确定我在Qt中遇到了什么。

该如何解决?

2 个答案:

答案 0 :(得分:1)

您可以使用INSTALL SET并将其附加到INSTALL列表中,如QT documentation所示,如下图所示:

documentation.path = /usr/local/program/doc
documentation.files = docs/*
INSTALLS += documentation

为方便起见,您也可以使用QMAKE_PRE_LINK。现在您有了一些选择,您可能会在stackoverflow中找到更多信息,例如posts like this one

答案 1 :(得分:0)

或者,我发现DEPENDPATH不正确。我在libmodbus中有一个文件夹,需要指向:

DEPENDPATH += $$PWD/../../codelibrary/QtMinGW53/libmodbus-master/src/.deps

程序对此进行了正确的编译