IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[Crypto++] Impossible d'utiliser ni compiler la lib


Sujet :

MFC

  1. #1
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut [Crypto++] Impossible d'utiliser ni compiler la lib
    Bonjour à tous

    Je désire utiliser la lib Crypto++ dans un projet, et pour se faire j'ai décidé de commencer par la tester avec un petit programme console que je nomme "hashtest" (car il réalise simplement un hash de type SHA-512 d'une chaîne de caractères entrés au clavier).
    Pour compiler, j'utilise Visual C++ 2005 Express avec le Microsoft Platform SDK, et je précise que c'est la première fois que je travaille avec cet environnement. Mais comme il s'agit du grand classique sous windows, je me dis que je ne devrais pas avoir de problème pour intégrer des librairies tierces... Faux espoirs malheureusement...

    Déjà sur le site de cryptopp ils proposent 2 versions : 5.2.1 non compilée et 5.2.3 déjà compilée (.lib et .dll dispo). Je commence donc par tester avec la 5.2.3 : je renseigne le chemin des include et de la lib dans Visual C++, je crée un nouveau projet console, j'ajoute mon code et je compile. La compil marche sans problème, mon programme me demande la chaîne que je veux hasher, j'entre le mot "toto" j'appuie sur <Enter> et là paf je me ramasse le sympathique message suivant :
    Unhandled exception at 0x7c81eb33 in Hashtest.exe: Microsoft C++ exception: CryptoPP::SelfTestFailure at memory location 0x0012f6d0..
    Or, le même programme tourne parfaitement sous linux, je sais donc que mon code source n'est pas en cause.

    J'essaie alors de recompiler la lib... et cette fois je me heurte à des messages d'erreur à la compilation même !
    'bool CryptoPP::OIDLessThan::operator ()<CryptoPP::ECP>(const CryptoPP::OID &,const CryptoPP::EcRecommendedParameters<CryptoPP::ECP> &)' : cannot convert parameter 1 from 'const CryptoPP::EcRecommendedParameters<CryptoPP::ECP>' to 'const CryptoPP::OID &'
    Reason: cannot convert from 'const CryptoPP::EcRecommendedParameters<CryptoPP::ECP>' to 'const CryptoPP::OID'
    No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
    Que ce soit avec la version 5.2.3 ou 5.2.1 résultats identiques...

    Une dernière précision : pour vérifier que je ne fais pas d'erreur dans les manipulations de Visual C++, j'ai testé l'intégration d'une autre lib, en l'occurence Irrlicht (moteur 3D), et j'ai réussi à compiler et exécuter une application exemple sans le moindre problème et à la manière du cas d'école : ajout des rep include/lib, compilation, exécution...

    Bref je calle pour Crypto++ Toute aide serait grandement appréciée



    PS : Voici le code source de mon prog de test :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    /*
    Prog de test pour la lib Crypto++
    Compile: g++ -o hashtest hashtest.cpp -lcrypto++
     
    Site pour tester: http://serversniff.net/content.php?do=hash
    */
     
    #include <iostream>
    #include <string>
     
    // ajouter crypto++/ au chemin sous linux
    #include <cryptlib.h>
    #include <sha.h>
     
    using namespace std;
    using namespace CryptoPP;
     
    int main() {
    	string plaintext;
    	byte sig[SHA512::DIGESTSIZE];
     
    	cout<<"Chaîne de caractères à hasher: ";
    	getline(cin, plaintext); // pour saisir des chaînes avec espaces
     
    	// appel à la lib Crypto++ pour calculer le hash
    	SHA512 hash;
    	hash.CalculateDigest(sig, (byte const *)plaintext.c_str(), plaintext.size());
     
    	cout<<"Hash ("<<SHA512::DIGESTSIZE<<" bytes) = ";
    	for (int i=0; i<SHA512::DIGESTSIZE; i++) cout<<hex<<uppercase<<(int)sig[i]<<" ";
    	cout<<dec<<nouppercase<<endl;
    }
    Pour info, sous linux Debian rien de plus simple pour utiliser Crypto++ :
    1. apt-get install libcrypto++-dev
    2. créer le fichier hashtest.cpp comme montré ci-dessus
    3. pour compiler taper une seule ligne : g++ -o hashtest hashtest.cpp -lcrypto++
    Ce n'est pas un troll mais une simple constatation, on voit bien ici que c'est windows qui est nettement plus compliqué que linux

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    vilain trolleur va
    pour ton premier probleme c'est ta lib qui léve une exception .
    apres pour le reste c'est qu'une question de compatibilité de compilateurs.
    windows n'a rien à voir la dedans ...
    en gros il faut soit essayer de resoudre le probleme de compil.
    ou regarder si il n' y a pas une distribution prevue pour visual2005.
    et d'apres ce que je viens de voir sur le site, les distributions sont prévues pour vc6 et vc2003 et vc2005 respecte plus la norme ,d'ou les problemes à la compil.

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    j'ai essayé de reconstruire la lib avec vc2005.
    pour cryptlib en release pas de pbrobleme.
    d'ailleurs je ne comprends pas le projet en debug génére des erreurs liées a la stl et pas en release
    pour la dll il manque un fichier .rc dans la distribution...

    la version .lib en release pour vc2005:
    http://farscape.developpez.com/Samples/cryptlib.zip


  4. #4
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    Merci beaucoup, j'essaierai ça (au fait tu m'as compilé la version 5.2.1 ou 5.2.3 ? )

    Mais ce qui m'intéresse surtout c'est de savoir comment tu as fait pour la compiler ? (pour pouvoir le refaire et apprendre les subtilités de Visual )
    Si tu pouvais m'expliquer en 2 mots
    Tu me parles de version debug et release, ça semble être la clé, où est-ce qu'on règle ça dans Visual ? (newbie inside)
    Merci

    Pour mon prob d'exception, oui j'avais remarqué que c'en était une mais tu constates que le code est simplissime et surtout... ça compile et marche parfaitement bien sous linux, donc la prog est bonne normalement
    Je ne vois pas donc pas du tout d'où vient cette exception, en plus il parle d'un "selftest" c'est inquiétant, c'est pour ça que j'ai pensé à une version de lib foireuse et donc à la recompiler

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  5. #5
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    J'ai trouvé pour le build en release
    J'ai aussi réussi à générer un cryptopp.lib de 40 MB comme toi, par contre ça m'inquiète car le lib fourni avec l'archive officielle fait moins de 2 MB...

    Je testerai le reste plus tard

    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    j'ai refait quelques essais :
    la taille qui me paraissait énorme au début est normale vu le nombre de source en question.
    les 2 m° dont tu parlais doit correspondre à la version DLL de la lib:
    dans le .lib il n'y a que les définitions d'appels ,dans la dll il y a le code...
    bon d'ailleurs j'ai reussi a refaire la dll ,j'ai enlevé du projet le .rc .
    pour finir je comprends rien a cette distrib , la version dll comporte moins de source que la version lib statique

  7. #7
    ovh
    ovh est déconnecté
    Rédacteur
    Avatar de ovh
    Homme Profil pro
    Architecte devops web full stack
    Inscrit en
    Mai 2002
    Messages
    3 841
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Architecte devops web full stack

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 841
    Points : 6 514
    Points
    6 514
    Par défaut
    As-tu réussi à faire tourner mon p'tit code de test ? Moi je n'y arrive pas


    Tutoriels sur les UPS, e-commerce, PHP, critiques de livres...

    Pensez à consulter les FAQs et les cours et tutoriels.
    FAQ Linux - Cours et tutoriels Linux - FAQ PHP - Cours et tutoriels PHP
    Ce forum est fait pour vous et surtout par vous, merci d'en respecter les règles.

    Je n'ai rien à voir avec la société www.ovh.com !

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/02/2012, 16h42
  2. Impossible d'utiliser Qt et la lti-lib
    Par AureK dans le forum Qt
    Réponses: 1
    Dernier message: 05/03/2009, 21h47
  3. Réponses: 5
    Dernier message: 04/03/2006, 15h42
  4. impossible d'utiliser un HWND parent dans un thread
    Par sylvain114d dans le forum Windows
    Réponses: 12
    Dernier message: 23/09/2004, 12h21
  5. impossible d'utiliser ma fonction dans un insert
    Par caramel dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/04/2003, 15h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo