我已经花了很多时间在Windows中配置QCA,但它仍然没有告诉我它的工作,也没有找到任何线索来弄清楚这里发生了什么。 到目前为止我得到的唯一消息是:无法获得劣质的句柄:参数不正确。 这是什么意思?
请告诉我这方面......这是我的代码。
专业档案:
QT += core
QT -= gui
TARGET = untitled
CONFIG += console
CONFIG -= app_bundle
TEMPLATE = app
SOURCES += main.cpp
INCLUDEPATH += "C:/Qt/hash/qca-2.0.3/include"
LIBS += "C:/Qt/hash/qca-2.0.3/lib/qca2.dll"
源文件:
#include <QtCrypto/QtCrypto>
#include <QCoreApplication>
#include <QDebug>
#include <stdio.h>
int main(int argc, char **argv)
{
// the Initializer object sets things up, and
// also does cleanup when it goes out of scope
QCA::Initializer init;
QCoreApplication app(argc, argv);
// we use the first argument if provided, or
// use "hello" if no arguments
QCA::SecureArray arg = (argc >= 2) ? argv[1] : "hello";
// must always check that an algorithm is supported before using it
if( !QCA::isSupported("sha1") )
printf("SHA1 not supported!\n");
else {
// this shows the "all in one" approach
QString result = QCA::Hash("sha1").hashToString(arg);
printf("sha1(\"%s\") = [%s]\n", arg.data(), result.toAscii().data());
}
// must always check that an algorithm is supported before using it
if( !QCA::isSupported("md5") )
printf("MD5 not supported!\n");
else {
// this shows the incremental approach. Naturally
// for this simple job, we could use the "all in one"
// approach - this is an example, after all :-)
QCA::SecureArray part1(arg.toByteArray().left(3)); // three chars - "hel"
QCA::SecureArray part2(arg.toByteArray().mid(3)); // the rest - "lo"
// create the required object.
QCA::Hash hashObject("md5");
// we split it into two parts to show incremental update
hashObject.update(part1);
hashObject.update(part2);
// no more updates after calling final.
QCA::SecureArray resultArray = hashObject.final();
// convert the result into printable hexadecimal.
QString result = QCA::arrayToHex(resultArray.toByteArray());
printf("md5(\"%s\") = [%s]\n", arg.data(), result.toAscii().data());
}
qDebug()<<"Qca is working fine";
return 0;
}
答案 0 :(得分:1)
在.pro文件中,LIBS
变量应包含编译器参数,而不仅仅是路径。库的编译器参数是-L<librarypath>
和-l<libraryname>
,在您的情况下我猜这行必须是:
LIBS += -LC:/Qt/hash/qca-2.0.3/lib -lqca2