Problème installation plug-in QCA-OSSL (partie de l'architecture Cryptographic Qt) sur Windows 7

StackOverflow https://stackoverflow.com/questions/4609621

Question

J'ai essayé d'utiliser QCA ( Lien ) pendant quelques jours sur mon PC sous Windows maintenant, fonctionne très bien sur ma boîte de linux, juste ne peut pas le faire fonctionner avec Windows.

Alors j'ai suivi toutes les instructions d'installation QCA et le plug-in ossl pour QCA. Le QCA fonctionne très bien, mais pour une raison quelconque le plug-in n'apparaît pas dans mon Qt Creator et je ne suis en mesure d'utiliser certaines fonctions dans le plug-in.

J'ai utilisé le qcatool2.exe qui vient avec QCA pour vérifier mes plugins en utilisant

qcatool2 plugins --debug

et ce message d'erreur:

plugin: qca-ossl2.dll: failed to load: The plugin 'C:/Qt/2010.05/qt/plugins/crypto/qca-ossl2.dll' uses incompatible Qt library. Expected build key "Windows mingw debug full-config", got "Windows mingw release full-config"

Maintenant, cela me semble comme si qt requiert le plugin être compilé en mode débogage (pour obtenir la clé de construction pour contenir debug plutôt que de la libération), donc j'ajouté

CONFIG += debug

au dossier du projet de mon plug-in et a couru qmake et mingw32-faire comme d'habitude, mais cela semble avoir eu aucun effet.

Mon fichier de projet pour le plug-in est maintenant:

TEMPLATE = lib
CONFIG += plugin
QT -= gui
DESTDIR = lib

VERSION = 2.0.0

unix:include(conf.pri)
windows:CONFIG += crypto
windows:include(conf_win.pri)

CONFIG += create_prl

SOURCES = qca-ossl.cpp

windows:{
load(winlocal.prf)
isEmpty(WINLOCAL_PREFIX) {
error("WINLOCAL_PREFIX not found. See http://delta.affinix.com/platform/#winlocal")
}

OPENSSL_PREFIX = $$WINLOCAL_PREFIX
DEFINES += OSSL_097

INCLUDEPATH += $$OPENSSL_PREFIX/include
LIBS += -L$$OPENSSL_PREFIX/lib
LIBS += -llibeay32 -lssleay32
LIBS += -lgdi32 -lwsock32
}

!debug_and_release|build_pass {
CONFIG(debug, debug|release) {
mac:TARGET = $$member(TARGET, 0)_debug
windows:TARGET = $$member(TARGET, 0)d
}
}

CONFIG += debug

Quelqu'un at-il des idées? Si vous avez besoin plus de détails demander juste, je l'ai essayé d'être aussi complet que possible. Merci

Tom

Était-ce utile?

La solution

J'ai été aux prises avec une situation similaire: QCA-ossl se construit bien sur linux et pas du tout sur les fenêtres. Je viens de frapper une percée qui pourrait vous aider.

Versions et correctifs

  • qtsdk-2010.05
  • qca-2.0.3
  • QCA-ossl-r1190163 (à partir du référentiel)
  • OpenSSL-1.0.0b

Tout d'abord, si vous utilisez une version plus récente (0.9.7+, je pense) de OpenSSL, vous devrez peut-être utiliser la version qca-ossl du référentiel car il patches certaines incompatibilités. J'ai aussi besoin de commenter quelques lignes dans le nouveau fichier qca-ossl.cpp traitant SHA224, SHA256, SHA384 et SHA512 pour éviter les erreurs de compilation. J'utilise qca-ossl pour les chiffrements, donc je ne suis pas inquiet au sujet de hachage et n'a pas enquêté sur les erreurs beaucoup.

Fixation Il

Les versions Windows problèmes étaient nombreuses fois pour moi, mais la plupart d'entre eux proviennent de la configuration de construction de mauvaise qualité pour la version Windows du plug-in. Il est agréable d'avoir un petit script de configuration pour le côté linux des choses, mais qu'en est-fenêtres? Nous devons faire un peu de travail supplémentaire.

Une partie de ce travail supplémentaire est parce que j'ai choisi un emplacement non standard pour les bibliothèques de soutien de ma demande. QCA et OpenSSL deux existent dans la structure des répertoires du projet dans une bibliothèque / répertoire. Je suppose que vous avez fait quelque chose de similaire si vous essayez de traverser compiler votre application, mais même si vous ne l'avez pas ce qui suit devrait vous aider.

Recherche OpenSSL

QCA-ossl construire habitude très bien si elle ne peut pas trouver la bibliothèque, il est censé se connecter à ... :) Alors précisons directement là où il est. Commentez les lignes relatives à winlocal.prf et les changements qui en découlent dans qca-ossl.pro. Nous allons directement indiquer où trouver OpenSSL.

TEMPLATE = lib
CONFIG += plugin
QT -= gui
DESTDIR = lib

VERSION = 2.0.0

unix:include(conf.pri)
windows:CONFIG += crypto
windows:include(conf_win.pri)

CONFIG += create_prl

SOURCES = qca-ossl.cpp

windows:{
# Rather than rely on the winlocal.prf file, we will specify the location of the openssl
# by hand when running qmake.
#
# load(winlocal.prf)
# isEmpty(WINLOCAL_PREFIX) {
# error("WINLOCAL_PREFIX not found. See http://delta.affinix.com/platform/#winlocal")
# }
#
# OPENSSL_PREFIX = $$WINLOCAL_PREFIX
DEFINES += OSSL_097

INCLUDEPATH += $$OPENSSL_PREFIX/include
LIBS += -L$$OPENSSL_PREFIX/lib
LIBS += -llibeay32 -lssleay32
LIBS += -lgdi32 -lwsock32
}

!debug_and_release|build_pass {
CONFIG(debug, debug|release) {
mac:TARGET = $$member(TARGET, 0)_debug
windows:TARGET = $$member(TARGET, 0)d
}
}

Maintenant, nous avons un accès direct à la variable $$ environnement OPENSSL_PREFIX dans le fichier .pro. Nous pouvons définir quand nous appelons qmake en procédant comme suit.

qmake.exe "OPENSSL_PREFIX=C:/path/to/openssl-1.0.0b"

Vous devriez être en mesure d'utiliser des barres obliques vers l'arrière ou vers l'avant des barres obliques. Ici, je choisis avant depuis Qt les a dépréciée depuis 4.7.

Vous pouvez définir directement la variable OPENSSL_PREFIX dans le fichier .pro.

Recherche QCA

Après avoir comparé les fenêtres et unix makefile pour qca-ossl, assez curieusement, il ne comprend jamais les bibliothèques QCA pour la construction ou un lien! ?!?! Cela a conduit à une « interface non définie » erreur sur la ligne Q_INTERFACES (QCAPlugin) de la définition de classe opensslPlugin à la fin de qca-ossl.cpp.

Pour éviter cela, nous devrons définir explicitement les inclure et les chemins de bibliothèque à la main. L'expansion sur la ligne de qmake de la dernière section de la ligne qmake finale est la suivante.

qmake.exe "OPENSSL_PREFIX=C:/path/to/openssl-1.0.0b" "INCLUDEPATH+=C:/path/to/qca-2.0.3/include/QtCrypto" "LIBS+=-LC:/path/to/qca-2.0.3/lib -lqca2"

"Installation" QCA-ossl

Après avoir exécuté la ligne qmake ci-dessus et l'exécution d'une plaine ol » make, vous devez installer QCA-ossl. Vous pouvez copier le dll résultant du répertoire lib / dans votre répertoire plugins de Qt, qui, si vous utilisez mes versions par défaut C: \ Qt \ 2010.05 \ qt \ plugins \ Crypto. Sinon, vous pouvez le déplacer dans un répertoire Crypto qui est au niveau de la racine de la structure des répertoires de votre projet tel que C:. \ Chemin \ \ mon \ projet \ Crypto

J'espère que cela aide!

Autres conseils

En fait, vous pouvez essayer ce tutoriel Poster connexes

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top