2013-08-20 52 views
-1

與Qt的* .pro文件的一個問題:Qt的鏈接器錯誤:無法找到-lQtCored

TARGET = ProgName 
TEMPLATE = app 
CONFIG += console 
QT += core 
QT += gui 

LIBS += -LC:\\Qt\\4.8.5\\bin 
LIBS += -LC:\\Qt\\4.8.5\\lib 
LIBS += -LS:\\lib 
# LIBS += -lQtCored4   # not necessary 
# LIBS += -lQtCore4 
# LIBS += -lQtGuid4 
# LIBS += -lQtGui4 

SOURCES += ... 
HEADERS += ... 

我得到這些鏈接器錯誤:

:-1: error: cannot find -lQtGuid 
:-1: error: cannot find -lQtCored 
collect2.exe:-1: error: error: ld returned 1 exit status 

所有的DLL在指定的目錄存在。
該文檔沒有多大幫助。

這個pro文件幾天前工作,它似乎有問題,因爲我安裝Qt 5.1(這還沒有使用,但我仍然與Qt4工作)。

平臺:Windows 7中,MinGW的,Qt的4.8.4

回答

1

你只需要以下內容:

TARGET = ProgName 
TEMPLATE = app 
CONFIG += console 
QT -= gui 

SOURCES += ... 
HEADERS += ... 

這是因爲coregui被自動添加到QT變量。但是,在這種情況下,如果您希望按照您的想法構建控制檯應用程序,則可以刪除gui默認值。雖然「CONFIG + = console」最終可以爲你做到這一點。除此之外,一切都會自動爲你工作,所以你不需要將庫路徑傳遞給qt庫等等。你只需要使用QT += widgets和類似的行,如果你使用更多的Qt模塊,默認情況下沒有。即使那樣,你也不需要象你在問題中那樣設置Qt庫路徑。

此外,如果你想目標跨平臺後,你不妨補充一點:

CONFIG - = app_bundle

,以避免創建的Mac捆綁基於控制檯應用程序。

如果你已經安裝了多個版本的Qt,你需要從所需的版本中使用qmake,它會沒事的。僅舉一個例子:我在Archlinux系統上使用Qt5的qmake,Qt4的Qt5使用qmake-qt4

在windows上,您應該在不需要的路徑之前在路徑中安裝所需的qt安裝bin,或者您需要明確調用所需的qmake,如C:\path\to\my\desired\qmake

1

有沒有必要AFAIK鏈接到任何Qt庫。

如果您使用的是Qt Creator,您需要確保Qt 4.8.4在Tools - Options - Build & Run-Kits中正確識別。由於您安裝了5.1,這可能不再是事實。然後爲您的項目設置4.8.4工具包並進行編譯(清理構建目錄有時也有幫助)。