繁体   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