2012-08-11 58 views
1

我已经给了很多时间来在窗口中配置QCA,但它仍然没有告诉我,它的工作,也没有找到任何线索,只是弄清楚这里发生了什么。 我到目前为止得到的唯一消息是:无法获得劣势的句柄:参数不正确。 这是什么意思?为什么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

需要注意的是MD5和SHA1已经包含在Qt的核心。 – leemes 2012-08-12 00:42:41

回答

1

在你的.pro文件中,LIBS变量应包含编译器参数,而不仅仅是路径。图书馆编译器参数是-L<librarypath>-l<libraryname>,你的情况我想这行必须是:

LIBS += -LC:/Qt/hash/qca-2.0.3/lib -lqca2 
相关问题