我的项目定位为 lib ,另一个项目定位为应用。
第一个项目成功构建为静态和动态(共享)库。
第二个项目成功链接动态库,但无法链接静态。
会出现许多错误消息,例如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链接到它。 我怎么能告诉它我想构建一个静态应用程序并让它在静态构建的lib中寻找外部?
答案 0 :(得分:2)
静态链接QuaZip需要
CONFIG += staticlib
在你的qmake文件中。
或者确保在您从应用程序中实际包含任何QuaZip标头之前定义了QUAZIP_STATIC
。