Reputation: 438
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
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