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 に答える