2013-06-12 3 views
3

J'essaie actuellement d'exécuter Crypto ++ dans mon application Qt. Mais ça ne marche pas. J'espère que quelqu'un d'entre vous sait ce qui ne va pas, parce que je ne l'ai pas compris et que je suis là depuis 3 jours maintenant.Crypto ++ ne peut pas construire Application Qt

Pour concentrer le problème, j'ai créé une application de test. En tenant ce code: http://pastebin.com/1XMARtds pris de http://programmingknowledgeblog.blogspot.de/2013/04/compiling-and-integrating-crypto-into.html

Mon .pro ressemble à ceci:

TEMPLATE = app 
CONFIG += console 
CONFIG -= app_bundle 
CONFIG -= qt 

SOURCES += main.cpp 

win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../Savor_V100/libraries/ -lcryptlib 
else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../Savor_V100/libraries/ -lcryptlibd 
else:unix: LIBS += -L$$PWD/../Savor_V100/libraries/ -lcryptlib 

INCLUDEPATH += $$PWD/../Savor_V100/includes/cryptopp562 
DEPENDPATH += $$PWD/../Savor_V100/includes/cryptopp562 

J'ai compilé la bibliothèque MS Visual Studio 2012. Lorsque j'utilise ces paramètres: http://i.imgur.com/Nd9TEIA.png

I obtenir un seul fichier 50mb-ish .lib.

Lorsque je tente alors de construire mon application dans Qt Creator (5.0.2) Je reçois le texte suivant: http://i.imgur.com/RbCGQDU.png

Beaucoup de:

cryptlib.lib(cryptlib.obj):-1: error: LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in main.obj 

Il dit aussi: Fichier non trouvé: cryptlib.lib (cryptlib.obj)

Si je mets les fichiers .obj dans le même dossier que le fichier .lib, je me débarrasse des erreurs "fichier non trouvé". Mais rien d'autre ne change.

Quelqu'un pourrait-il expliquer ce que je fais mal? Les informations LNK2038 sur le site ne me permet pas :(

Répondre

2

Étape 7 des instructions que vous Linked à here semblent être étrange. Normalement, vous devez sélectionner /MD et /MDd pour la libération et Debug respectivement, ou vous feriez sélectionnez /MT et /MTd.

le point crucial est que vous avez votre version Release de Crypto lié à la version dynamique de la bibliothèque C Runtime (via /MD), mais votre exe de test est réglé sur un lien vers la version statique (via /MT

Vous ne devez lier qu'une seule version du CRT - c'est-à-dire recompiler crypto ++ en mode Release avec /MT au lieu de /MD, ou modifier votre exe test pour utiliser /MD. Pour plus d'informations sur ces indicateurs, reportez-vous au msdn docs.

1

Qui veut courir Crypto ++ sous linux (je l'ai fait sur ubuntu), après la bibliothèque téléchargement via apt-get install, devrait ajouter au fichier pro ceci:
LIBS + = -L/usr/lib/Crypto ++ -lcrypto ++ Bonne chance!

Questions connexes