我下载了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: 错误:没有为目标'C:/Users/Special Services/WorkOrder/libcryptlibd.a'制定规则,需要'debug\untitled.exe'。停止。
我认为我明白这个错误是在告诉我需要一行额外的代码,所有的else:win32行都在DEPENDPATH下面...还是因为添加的行使用了$$PWD,那不是一个Unix命令吗?我查看了其他实例中的这个错误,我相当确定问题出在这个.pro文件中的某个地方。
编辑:
我决定采取另一种方法。我删除了导入库所添加到我的.pro文件的任何内容,而是将这行代码放在了它的位置:
win32:LIBS += C:\Qt\5.2.1\mingw48_32\include\cryptopp\Win32\Output\Debug\cryptlib.lib(指向cryptlib.lib文件的路径)
这样构建就很好了。我确保所有的cryptopp头文件都在我的包含目录中,C:\Qt\5.2.1\mingw48_32\include\cryptopp 然后我尝试包含一个文件,使用#include ,构建也很好。第一次构建时有40多个警告,但第二次构建时,没有任何警告。