2013-04-04 176 views
2

我有一個項目的目標爲lib和另一個作爲應用程序Qt鏈接靜態構建庫

第一個項目成功構建爲靜態並作爲動態(共享)庫。

第二個項目成功鏈接一個動態庫,但它不能鏈接一個靜態之一。 出現許多錯誤消息,如LNK2001: unresolved external symbol

app.pro:

TEMPLATE = app 
CONFIG += static link_prl ordered 
DEFINES += QT_NODLL 
QT += core gui network xml 

... 

# --- LINK QUAZIP LIB SHARED --- 

#LIBS += -L$$quote(C:/Qt/quazip/build-quazip-0.5.1-Qt_4_8_3_shared-Debug/quazip/debug) -lquazip 
#PRE_TARGETDEPS += $$quote(C:/Qt/quazip/build-quazip-0.5.1-Qt_4_8_3_shared-Debug/quazip/debug/quazip.lib) 

# --- LINK QUAZIP LIB STATIC --- 

LIBS += -L$$quote(C:/Qt/quazip/build-quazip-0.5.1-Qt_4_8_3_static-Release/quazip/release) -lquazip 
PRE_TARGETDEPS += $$quote(C:/Qt/quazip/build-quazip-0.5.1-Qt_4_8_3_static-Release/quazip/release/quazip.lib) 

目錄中的內容:

Directory of C:\Qt\quazip\build-quazip-0.5.1-Qt_4_8_3_shared-Debug\quazip\debug 

04.04.2013 11:01 <DIR>   .           
04.04.2013 11:01 <DIR>   ..           
04.04.2013 11:01   188 498 JlCompress.obj        
04.04.2013 11:01    2 484 moc_quagzipfile.cpp       
04.04.2013 11:01   43 994 moc_quagzipfile.obj       
04.04.2013 11:01    2 501 moc_quaziodevice.cpp       
04.04.2013 11:01   44 026 moc_quaziodevice.obj       
04.04.2013 11:01    2 467 moc_quazipfile.cpp       
04.04.2013 11:01   62 441 moc_quazipfile.obj       
04.04.2013 11:01   40 936 qioapi.obj         
04.04.2013 11:01   24 586 quaadler32.obj        
04.04.2013 11:01   24 554 quacrc32.obj         
04.04.2013 11:01   73 276 quagzipfile.obj        
04.04.2013 11:01   69 745 quaziodevice.obj        
04.04.2013 11:01   188 928 quazip.dll         
04.04.2013 11:01   40 067 quazip.exp         
04.04.2013 11:01   999 808 quazip.ilk         
04.04.2013 11:01    381 quazip.intermediate.manifest     
04.04.2013 11:01   65 678 quazip.lib         
04.04.2013 11:01   156 746 quazip.obj         
04.04.2013 11:01   1 166 336 quazip.pdb         
04.04.2013 11:01   259 653 quazipdir.obj        
04.04.2013 11:01   117 317 quazipfile.obj        
04.04.2013 11:01   47 039 quazipfileinfo.obj       
04.04.2013 11:01   57 489 quazipnewinfo.obj       
04.04.2013 11:01   35 483 unzip.obj         
04.04.2013 11:01   34 526 zip.obj          
       25 File(s)  3 748 959 bytes         
       2 Dir(s) 17 125 515 264 bytes free 

Directory of C:\Qt\quazip\build-quazip-0.5.1-Qt_4_8_3_static-Release\quazip\release 

04.04.2013 12:46 <DIR>   .            
04.04.2013 12:46 <DIR>   ..            
04.04.2013 12:46   1 457 363 JlCompress.obj         
04.04.2013 12:46    2 484 moc_quagzipfile.cpp        
04.04.2013 12:46   1 084 653 moc_quagzipfile.obj        
04.04.2013 12:46    2 501 moc_quaziodevice.cpp        
04.04.2013 12:46   1 084 461 moc_quaziodevice.obj        
04.04.2013 12:46    2 467 moc_quazipfile.cpp        
04.04.2013 12:46   1 199 125 moc_quazipfile.obj        
04.04.2013 12:46   1 084 170 qioapi.obj          
04.04.2013 12:46   279 307 quaadler32.obj         
04.04.2013 12:46   279 270 quacrc32.obj          
04.04.2013 12:46   1 115 174 quagzipfile.obj         
04.04.2013 12:46   1 108 222 quaziodevice.obj         
04.04.2013 12:46  14 977 872 quazip.lib          
04.04.2013 12:46   1 246 009 quazip.obj          
04.04.2013 12:46    801 quazip.prl          
04.04.2013 12:46   1 357 090 quazipdir.obj         
04.04.2013 12:46   1 246 159 quazipfile.obj         
04.04.2013 12:46   1 121 490 quazipfileinfo.obj        
04.04.2013 12:46   1 134 685 quazipnewinfo.obj        
04.04.2013 12:46   56 712 unzip.obj          
04.04.2013 12:46   59 090 zip.obj           
       21 File(s)  29 899 105 bytes          
       2 Dir(s) 17 123 479 552 bytes free 

據我瞭解,QMAKE想要一個DLL鏈接到它。 我該如何告訴它我想構建一個靜態應用程序,並讓它在靜態構建的庫中查找外部?

回答

2

要在您的qmake文件中靜態鏈接QuaZip需要 CONFIG += staticlib

或者確定,QUAZIP_STATIC是在您實際包含應用程序中的任何QuaZip標頭之前定義的。

+0

模板=應用 CONFIG + =靜態+ staticlib link_prl下令 定義+ = QT_NODLL QT + =核心GUI網絡XML 沒有改變。 – adnako 2013-04-04 13:29:11

+0

從官方文檔:使用CONFIG + = staticlib qmake選項將其編譯爲靜態庫。 QUAZIP_STATIC在這種情況下由qmake自動定義。 這是一個QuaZip項目。不適用於使用zip的應用.lib – adnako 2013-04-04 13:31:40

+0

剛添加DEFINES + = QUAZIP_STATIC到** app **項目。非常感謝! – adnako 2013-04-05 08:49:44