Я скачал исходный код Crypto++ и скомпилировал проект cryptlib в Visual Studio 2013, а затем добавил сгенерированный файл .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
находятся под DEPENDPATH
... или это потому, что добавленные строки используют $$PWD
, разве это не команда Unix? Я просмотрел другие случаи этой ошибки, и я вполне уверен, что проблема связана с чем-то в файле .pro здесь.
ИЗМЕНИТЬ:
Я решил использовать другой подход. Я избавился от всего, что добавлялось в мой файл .pro при импорте библиотеки, и вместо этого просто поместил эту строку кода на свое место:
win32:LIBS += C:\Qt\5.2.1\mingw48_32\include\cryptopp\Win32\Output\Debug\cryptlib.lib
(Путь к файлу cryptlib.lib)
Это построено просто отлично. Я убедился, что все файлы заголовков cryptopp находятся в моем каталоге include, C:\Qt\5.2.1\mingw48_32\include\cryptopp
Затем я попытался включить файл с #include <cryptopp/aes.h>
, и он отлично сработал. В первый раз, когда я собирал, было более 40 предупреждений, но во второй раз, когда я собирал, он собирался без них.