muktoshuvro
muktoshuvro

Reputation: 438

Why QCA doesn't responded to my following program

I have given enormous amount of time to just configuring QCA in windows but still neither it tell me that its working nor i found any clue to just figure out what happening here. The only message i got so far is : Cannot obtain a handle to the inferior: The parameter is incorrect. What does that mean ?

Please tell me on this regard..Here is my code.

pro file :

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"

source file:

 #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;
     }

Upvotes: 1

Views: 1221

Answers (1)

leemes
leemes

Reputation: 45685

In your .pro file, the LIBS variable should contain compiler arguments, not just paths. Compiler arguments for libraries are -L<librarypath> and -l<libraryname>, in your case I guess that the line has to be:

LIBS += -LC:/Qt/hash/qca-2.0.3/lib -lqca2

Upvotes: 1

Related Questions