我现在有点卡住了一个小示例项目,我想运行它来测试我想在主项目中使用的一些密码学。
基本上我使用的是最新的 Qt Creator,并且创建了一个简单的窗口对话框。此外,我想通过CkCrypt2测试 PBKDF2 的实现
所以我所做的是下载库的 X64 版本并将其添加到我的项目文件夹中。然后我告诉我的 Qt 项目使用外部库,最终的 .pro 文件如下所示:
#-------------------------------------------------
#
# Project created by QtCreator 2013-06-09T18:09:44
#
#-------------------------------------------------
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = crypt2test
TEMPLATE = app
SOURCES += main.cpp\
m
ainwindow.cpp
HEADERS += mainwindow.h
FORMS += mainwindow.ui
win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/ -lChilkatDbgDll_x64
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/ -lChilkatDbgDll_x64d
else:unix: LIBS += -L$$PWD/libs/ -lChilkatDbgDll_x64
INCLUDEPATH += $$PWD/include
DEPENDPATH += $$PWD/include
我可以成功加载库,但无法启动应用程序。
我的 mainwindow.cpp 看起来像这样:
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "CkCrypt2.h"
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
CkCrypt2 crypt;
bool success;
success = crypt.UnlockComponent("Just some random text ");
if ( !success )
{
qDebug() << "Not successfully unlocking the library";
}
}
MainWindow::~MainWindow()
{
delete ui;
}
我在编译器中得到的错误信息是:
c:\qt\qt5.0.2\tools\qtcreator\bin\crypt2test\include\CkString.h:127: error: C2061: syntax error : identifier 'SYSTEMTIME'
c:\qt\qt5.0.2\tools\qtcreator\bin\crypt2test\include\CkString.h:129: error: C2061: syntax error : identifier 'SYSTEMTIME'
C:\Qt\Qt5.0.2\Tools\QtCreator\bin\crypt2test\include\CkCrypt2.h:429: error: C2061: syntax error : identifier 'SYSTEMTIME'
查看我看到的文件:
void appendDateRfc822(SYSTEMTIME &sysTime);
void appendDateRfc822Gmt(SYSTEMTIME &sysTime);
// GETSIGNATURESIGNINGTIME_BEGIN
bool GetSignatureSigningTime(int index, SYSTEMTIME &outSysTime);
// GETSIGNATURESIGNINGTIME_END
好的,所以它在抱怨 SYSTEMTIME 构造。所以我查找错误 C2061 基本上它说:
编译器发现了一个非预期的标识符。确保在使用之前声明了标识符。
这是有道理的,所以我查找了SYSTEMTIME并尝试这样做:
#include <windows.h>
但这会导致 windows.h 文件本身出现更多错误。
我在 Qt 中使用 MS Visual C++ 编译器。即使我使用 qmake。我对此很陌生,我还不完全理解。此外,我不知道如何解决这个问题,因为包括 windows.h 没有帮助。
这里似乎有什么问题?这是关于我的编译器的问题还是我使用第三方应用程序的问题,该库是用 MS Visual C++ 编译的,我现在正试图在 Qt 的 Windows 机器上使用 Windows Visual C++ 编译器?
对于任何帮助,我都非常感谢!
EDIT1: 实际上,在清理所有和 qmake 和构建项目之后,我现在有不同的错误,并且如前所述,在 Windows.h 中没有发现任何错误。由于有这么多,我做了一个截图:http: //i.imgur.com/B8EoENB.png
EDIT2: 我已经调整了我包含的库。在此之前,我在调试模式下使用 CkCrypt 的多线程库。我现在已经包含了单个 realease 库。它位于同一目录中。当包括 windows.h 时,我得到了事情已经定义的错误。所以我再次删除了该行。有了这个结果: http: //i.imgur.com/z415txR.png 这在底部显示 MSVCRT 与其他库发生冲突。它提到使用 NODEFAULTLIB:library 但我不知道该怎么做。在我处理过程中将谷歌搜索并保持最新状态。