1

我已经花了大量时间在 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;
     }
4

1 回答 1

1

在您的 .pro 文件中,LIBS变量应该包含编译器参数,而不仅仅是路径。库的编译器参数是-L<librarypath>and -l<libraryname>,在您的情况下,我猜该行必须是:

LIBS += -LC:/Qt/hash/qca-2.0.3/lib -lqca2
于 2012-08-12T00:45:49.300 回答