現在、メイン プロジェクトで使用したい暗号化をテストするために実行したい小さなサンプル プロジェクトに少し行き詰まっています。
基本的に私は最新の 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++ でコンパイルされているサードパーティのアプリを使用していて、Windows Visual C++ コンパイラを使用して Qt の Windows マシンでこれを使用しようとしているということですか?
どんな助けでも私は感謝しています!
EDIT1: 実際には、すべてクリーンアップしてqmakeおよびビルドプロジェクトを実行した後、さまざまなエラーが発生し、前述のようにWindows.hには何も見つかりませんでした。たくさんあったので、スクリーンショットを作りました: http://i.imgur.com/B8EoENB.png
EDIT2: 私が含めるライブラリを調整しました。この前は、CkCrypt のマルチスレッド ライブラリをデバッグ モードで使用していました。これで、単一の realease ライブラリが含まれました。これは同じディレクトリにあります。windows.h をインクルードすると、既に定義されているというエラーが表示されました。というわけでまたラインを外しました。この結果: http://i.imgur.com/z415txR.png これは、MSVCRT が他のライブラリと競合することを下部に示しています。NODEFAULTLIB:library を使用することが言及されていますが、その方法はわかりません。私が処理している間、グーグルでこれを最新の状態に保ちます。