[英]How to add Crypto++ library to Qt project
我下載了Crypto ++源代碼並在Visual Studio 2013中編譯了cryptlib項目,然后我將生成的.lib文件添加到我的Qt項目中,這使我的.pro文件看起來像這樣:
QT += core gui
QT += sql
greaterThan(QT_MAJOR_VERSION, 4):QT += widgets
TARGET = untitled
TEMPLATE = app
SOURCES += main.cpp\
mainwindow.cpp
HEADERS += mainwindow.h \
databasecontrol.h \
test.h
FORMS += mainwindow.ui
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/ -lcryptlib
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/ -lcryptlibd
else:unix: LIBS += -L$$PWD/ -lcryptlib
INCLUDEPATH += $$PWD/
DEPENDPATH += $$PWD/
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/libcryptlib.a
else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/libcryptlibd.a
else:win32:!win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/cryptlib.lib
else:win32:!win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/cryptlibd.lib
else:unix: PRE_TARGETDEPS += $$PWD/libcryptlib.a
將此庫添加到項目后,我立即構建它並收到以下錯誤:
:-1: error: No rule to make target 'C:/Users/Special Services/WorkOrder/libcryptlibd.a', needed by 'debug\\untitled.exe'. Stop.
我相信我理解錯誤告訴我,我需要一個額外的行, else:win32
所有的else:win32
行都在DEPENDPATH
下...或者是因為添加的行使用$$PWD
,不是Unix命令? 我已經查看了這個錯誤的其他實例,我很確定這個問題與.pro文件中的內容有關。
編輯:
我決定采取不同的方法。 我刪除了導入添加到我的.pro文件中的庫的任何內容,而只是將這行代碼放在其位置:
win32:LIBS += C:\\Qt\\5.2.1\\mingw48_32\\include\\cryptopp\\Win32\\Output\\Debug\\cryptlib.lib
文件的路徑)
這個建好了。 我確保所有的cryptopp頭文件都在我的include目錄中, C:\\Qt\\5.2.1\\mingw48_32\\include\\cryptopp
然后我嘗試使用#include <cryptopp/aes.h>
包含一個文件,它構建得很好。 我第一次建造,有40多個警告,但我第二次建造,它沒有任何建造。
win32-g++:CONFIG(release, debug|release): PRE_TARGETDEPS += $$PWD/libcryptlib.a else:win32-g++:CONFIG(debug, debug|release): PRE_TARGETDEPS += $$PWD/libcryptlibd.a
在Visual Studio下的Windows上,Crypto ++庫的名稱是cryptlib.lib
,而不是libcryptlib.a
。 如果您使用Cygwin(我不相信你這樣做),那么名稱將是libcryptopp.a
。
libcryptlibd.a
(注意添加d
)可能不正確。 它代表'debug',以及幾年前在Visual Studio 5.0 / 6.0天中使用的東西。 它基於將Crypto ++編譯和集成到Microsoft Visual C ++環境中 。 如果您將Win32/Debug/cryptlib.lib
重命名為Win32/Debug/cryptlibd.lib
,那么如果路徑正常,則可能沒問題。
我認為現在推薦的做法是使用cryptlib.lib
作為庫(到處都是同名),並根據配置更改鏈接器路徑。 路徑將是:
<crypto++ dir>/Win32/Debug/
<crypto++ dir>/x64/Debug/
<crypto++ dir>/Win32/Release/
<crypto++ dir>/x64/Release/
這是在Visual Studio下添加cryptlib.lib
的屏幕截圖。 請注意,它適用於所有配置:
以下是如何更改鏈接器路徑以便Visual Studio找到正確的cryptlib.lib
:
在上面, CRYPTOPP_LIB32
將是一個環境變量,其值類似於C:\\Users\\Special Services\\Crypto++\\Win32\\
。 同樣, CRYPTOPP_LIB64
將是C:\\Users\\Special Services\\Crypto++\\x64\\
不幸的是,我不知道如何在QtCreator下做這些事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.