2012-08-11 26 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 
相關問題