【问题标题】:Qt link static built libQt链接静态构建库
【发布时间】:2013-04-04 09:37:04
【问题描述】:

我有一个项目定位为 lib,另一个项目定位为 app

第一个项目成功构建为静态动态(共享)库。

第二个项目成功链接了一个动态库,但它无法链接一个静态库。 出现很多类似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 链接到它。 我如何告诉它我想构建一个静态应用程序并让它在静态构建的库中查找外部?

【问题讨论】:

    标签: windows qt static-libraries qmake


    【解决方案1】:

    静态链接 QuaZip 需要 CONFIG += staticlib 在你的 qmake 文件中。

    或者确保 QUAZIP_STATIC 在您实际包含应用程序中的任何 QuaZip 标头之前定义。

    【讨论】:

    • TEMPLATE = app CONFIG += static +staticlib link_prl ordered DEFINES += QT_NODLL QT += core gui network xml 没有任何改变。
    • 来自官方文档:使用 CONFIG += staticlib qmake 选项将其编译为静态库。在这种情况下,QUAZIP_STATIC 由 qmake 自动定义。它适用于 QuaZip 项目。不适用于使用 qua zip.lib 的应用
    • 刚刚将 DEFINES += QUAZIP_STATIC 添加到 app 项目中。非常感谢!
    猜你喜欢
    • 2015-12-21
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多