簡體   English   中英

如何將Crypto ++庫添加到Qt項目中

[英]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作為庫(到處都是同名),並根據配置更改鏈接器路徑。 路徑將是:

  • Win32,Debug: <crypto++ dir>/Win32/Debug/
  • Win64,Debug: <crypto++ dir>/x64/Debug/
  • Win32,發布: <crypto++ dir>/Win32/Release/
  • Win64,發布: <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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM