我正在嘗試構建我正在開發的項目的發行版本。當在Debug中構建Qt創建器時,它的效果很好。當我嘗試構建版本時,我得到「無法找到-lQtSerialPort」。 Qt 4.8.4不包含QtSerialPort。我不得不手動添加。我假設有一些我忘記包括在這裏。可能在.pro文件中?Qt 4.8.4創建版本
另外,我注意到我的Qt/4.8.4/lib目錄中有很多.prl文件。有一個用於QtSerialPortd.prl。這是這裏唯一一個似乎有.dll版本的人。不知道這是否重要。
的Makefile包括此:
Makefile: ???.pro
c:/Qt/4.8.4/mkspecs/features/serialport.prf \
$(QMAKE) -config release -o Makefile ???.pro
c:/Qt/4.8.4/mkspecs/features/serialport.prf:
serialport.prf看起來是這樣的:
qtAddLibrary(QtSerialPort)
!isEmpty(QTSERIALPORT_BUILD_ROOT) {
INCLUDEPATH -= $$QMAKE_INCDIR_QT/QtSerialPort
QMAKE_INCDIR += $$QTSERIALPORT_BUILD_ROOT/include $$QTSERIALPORT_BUILD_ROOT/include/QtSerialPort
QTSERIALPORT_BUILD_SUBDIR = src/serialport
debug_and_release_target {
CONFIG(debug, debug|release) {
QTSERIALPORT_BUILD_SUBDIR = $$QTSERIALPORT_BUILD_SUBDIR/debug
} else {
QTSERIALPORT_BUILD_SUBDIR = $$QTSERIALPORT_BUILD_SUBDIR/release
}
}
QMAKE_LIBDIR += $$QTSERIALPORT_BUILD_ROOT/$$QTSERIALPORT_BUILD_SUBDIR
}
mac {
LIBS -= -framework QtSerialPort$${QT_LIBINFIX}
if(!debug_and_release|build_pass):CONFIG(debug, debug|release) {
LIBS += -lQtSerialPort$${QT_LIBINFIX}_debug
} else {
LIBS += -lQtSerialPort$${QT_LIBINFIX}
}
}
編輯:
搞清楚我可以通過刪除d更改文件的名稱後最後,我意識到包含在所構建的exe文件中的所有庫包含的文件不會以「d.dll」結尾,除了QtSerialPortd.dll文件。在調試的.exe
即LDD:上發佈的.exe
QtCored4.dll => /cygdrive/c/Qt/4.8.4/bin/QtCored4.dll (0x69cc0000)
QtGuid4.dll => /cygdrive/c/Qt/4.8.4/bin/QtGuid4.dll (0xf30000)
QtNetworkd4.dll => /cygdrive/c/Qt/4.8.4/bin/QtNetworkd4.dll (0x6cb40000)
QtSerialPortd.dll => /cygdrive/c/Qt/4.8.4/bin/QtSerialPortd.dll (0x63680000)
LDD:
QtCore4.dll => /cygdrive/c/Qt/4.8.4/bin/QtCore4.dll (0x6e0c0000)
QtGui4.dll => /cygdrive/c/Qt/4.8.4/bin/QtGui4.dll (0x67700000)
QtNetwork4.dll => /cygdrive/c/Qt/4.8.4/bin/QtNetwork4.dll (0x65c80000)
QtSerialPortd.dll => /cygdrive/c/Qt/4.8.4/bin/QtSerialPortd.dll (0x63680000)
發佈VS調試,它看起來像QtSerialPortd.dll保持不變。我猜測,當我在不同的機器上嘗試這個應用程序時,這會有問題。
您需要一個用於調試和發佈版本的不同庫。你可以使用'config(release,debug | release)'和'config(debug,debug | release)'來分別進行測試。 –