我试图在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.a
和libmodbus-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中遇到了什么。
该如何解决?
答案 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
程序对此进行了正确的编译