SYSTEMTIME в qt

Сейчас я немного застрял с небольшим примером проекта, который я хотел бы запустить, чтобы проверить некоторую криптологию, которую я хочу использовать в основном проекте.

В основном я использую последнюю версию Qt Creator, и я создал простое диалоговое окно. Кроме того, я хотел бы протестировать реализацию PBKDF2 через CkCrypt2

Итак, я скачал версию библиотеки для 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 = appSOURCES += main.cpp\
m

ainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.uiwin32: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
В основном это говорит:

Компилятор нашел идентификатор, где он не ожидался. Удостовериться
этот идентификатор объявляется перед его использованием.

Что имеет смысл, поэтому я смотрю СИСТЕМНОЕ ВРЕМЯ и попробуйте сделать:

#include <windows.h>

Но это приводит к большему количеству ошибок в самом файле windows.h.

Я использую компилятор MS Visual C ++ в Qt. Хотя я использую qmake. Я очень новичок в этом, и я еще не все понимаю. Кроме того, я понятия не имею, как это исправить, потому что включение windows.h не помогает.

В чем здесь проблема? Это проблема с моим компилятором или с тем, что я использую стороннее приложение, библиотека которого скомпилирована с MS Visual C ++, и сейчас я пытаюсь использовать это на своем компьютере с Windows в Qt с компилятором Windows Visual C ++?

За любую помощь я благодарен!

EDIT1:
На самом деле, после очистки проекта all и qmake и сборки у меня теперь другие ошибки, и ни одна из них не была найдена в Windows.h, как было сказано ранее. Поскольку их было так много, я сделал скриншот: http://i.imgur.com/B8EoENB.png

EDIT2:
Я настроил библиотеку, которую я включаю. До этого я использовал многопоточную библиотеку CkCrypt в режиме отладки. Я теперь включил единственную библиотеку выпуска. Который находится в том же каталоге.
При включении windows.h я получил ошибки, которые уже были определены. Поэтому я снова убрал строку. С этим результатом: http://i.imgur.com/z415txR.png
Внизу показано, что MSVCRT конфликтует с другой библиотекой. Здесь упоминается использование библиотеки NODEFAULTLIB: но я не уверен, как это сделать. Будет ли Google и держать это в курсе, как я обрабатываю.

0

Решение

Много лет назад Chilkat изначально разрабатывался только для платформы Windows и по этой причине использовал SYSTEMTIME. За последние 5 лет (приблизительно) Chilkat является кроссплатформенным, и SYSTEMTIME больше не имеет смысла. Чтобы справиться с этой проблемой, существует заголовок «SystemTime.h» в том же каталоге, что и файл заголовка CkCrypt2.h. Вы можете включить это, чтобы решить проблему. (Однако, если определен WIN32, вам, вероятно, потребуется отредактировать SystemTime.h, чтобы удалить #ifdef.)

В любом случае методы, использующие SYSTEMTIME, будут устаревшими. Для любого метода или свойства, которые используют SYSTEMTIME, должен быть более новый альтернативный метод / свойство, которое вместо этого использует CkDateTime.

Наконец, Chilkat протестирует с Qt, чтобы в следующей версии (надеюсь) Qt из коробки скомпилировался без каких-либо ошибок.

0

Другие решения

Других решений пока нет …