Libraire OpenSSL - Problème d'utilisation

Libraire OpenSSL - Problème d'utilisation - C++ - Programmation

Marsh Posté le 09-09-2004 à 11:04:27    

Bonjour tout le monde,
 
J'ai installé la librairie OpenSSL (www.openssl.org) afin de pouvoir l'utiliser dans mon programme en C.
 
J'ai donc mon programme monprog.cpp et dans le même répertoire, on retrouve la librairie installée dans le répertoire OpenSSL.
 
J'ai fait un programme de test pour utiliser cette librairie dont voici le code :  

Code :
  1. #include <stdio.h>
  2. #include <OpenSSL\include\openssl\ssl.h>
  3. #include <OpenSSL\include\openssl\evp.h>
  4. int main (int argc,char **argv)
  5. {
  6. SSL_library_init();
  7. OpenSSL_add_all_algorithms();
  8. EVP_cleanup();
  9. return 0;
  10. }


 
Seulement je récupère l'erreur  

Code :
  1. d:\dossiers\projet\librairie ssl\monprogramme.cpp(2) : fatal error C1083: Cannot open include file: 'OpenSSL\include\openssl\ssl.h': No such file or directory
  2. Error executing cl.exe.


 
Alors que le fichier existe bien... Est-ce que quelqu'un pourrait m'aider?

Reply

Marsh Posté le 09-09-2004 à 11:04:27   

Reply

Marsh Posté le 09-09-2004 à 11:15:50    

donnes le chemin du répertoire dans lequel se trouve le répertoire OpenSSL au compilateur. (gcc -> option -I).
Si c'est dans le réprtoire courrant, remplace les '<' et '>' des include par des '"'
 
Si le compilateur te dis qu'il ne trouve pas un fichier, c'est soit qu'il n'existe pas, soit que tu ne lui dit pas corrctement où chercher. Le compilo a [presque] toujours raison.


Message édité par SoWhatIn22 le 09-09-2004 à 11:17:36
Reply

Marsh Posté le 09-09-2004 à 11:26:04    

Alors j'ai remplacé comme tu m'as dit les '<' et '>' par des "" et il a l'air de trouver le fichier qu'il ne trouvait pas. Par contre il ne trouve pas un include qui se trouve dans le fichier de la librairie. Pourtant encore une fois, non seulement ce fichier existe mais l'erreur se trouve dans un des fichiers de la librairie, fichier auquel je ne devrais pas avoir à toucher...  
 
Le code :  

Code :
  1. #include <stdio.h>
  2. #include "OpenSSL\include\openssl\ssl.h"
  3. #include "OpenSSL\include\openssl\evp.h"
  4. int main (int argc,char **argv)
  5. {
  6. SSL_library_init();
  7. OpenSSL_add_all_algorithms();
  8. EVP_cleanup();
  9. return 0;
  10. }


 
L'erreur :  
d:\dossiers\projet\librairie ssl\openssl\include\openssl\ssl.h(168) : fatal error C1083: Cannot open include file: 'openssl/e_os2.h': No such file or directory
Error executing cl.exe.

 
Et le bout de code qui pose problème dans ssl.h :

Code :
  1. #include <openssl/e_os2.h>


 
 
Pour ce qui est du gcc avec l'option -I, je ne peux pas m'en servir car je suis sur VisualC++ pour windows... :/
 
Comment faire ?

Reply

Marsh Posté le 09-09-2004 à 11:29:38    

sur vs.net :
 
outils => options => dossier projets => repertoire de vc++, dans les fichiers includes tu rajoute
d:\dossiers\projet\librairie ssl\openssl\include\


---------------
-( BlackGoddess )-
Reply

Marsh Posté le 09-09-2004 à 11:37:59    

EagleOne33 a écrit :

Pourtant encore une fois, non seulement ce fichier existe mais l'erreur se trouve dans un des fichiers de la librairie, fichier auquel je ne devrais pas avoir à toucher...  
 
Pour ce qui est du gcc avec l'option -I, je ne peux pas m'en servir car je suis sur VisualC++ pour windows... :/
 
Comment faire ?


 
T'as rien compris aux déclarations des chemins...
dans ton projet, il faut que tu ajoutes les chemins:
 - repertoire dans lequel se trouce OpenSSL. dans le cas présent, c'est "." puisque c'est le répértoire courant.
  - répertoire dans lequel se trouvent les fichiers utilisés par OpenSSL ; ici: ".\OpenSSL\include"
 
si tu ne déclares pas ça, le compilo ne pourra pas le faire à ta place. Doit bien yavoir un document d'aide fournit avec visual, quand même. Au prix que ça coûte, c'est la moindre des choses.

Reply

Marsh Posté le 09-09-2004 à 11:42:45    

Oki merci beaucoup. J'ai réussi. Là il y a d'autres erreurs de Link mais j'essaye de me débrouiller.
 
Merci encore ^^

Reply

Marsh Posté le 09-09-2004 à 11:59:19    

Bon j'y arrive pas   :??:  :??:  
J'ai récupéré un code tout simple afin de tester et pourtant rien ne marche.  
 
Voilà le code :

Code :
  1. #include <stdio.h>
  2. #include <openssl\ssl.h>
  3. #include <openssl\evp.h>
  4. int main (int argc,char **argv)
  5. {
  6. SSL_library_init();
  7. OpenSSL_add_all_algorithms();
  8. EVP_cleanup();
  9. return 0;
  10. }


 
Ca compile mais y'a des problèmes au linking. Voici ce qu'il me dit :  
Compiling...
monprogramme.cpp
Linking...
monprogramme.obj : error LNK2001: unresolved external symbol _EVP_cleanup
monprogramme.obj : error LNK2001: unresolved external symbol _OPENSSL_add_all_algorithms_noconf
monprogramme.obj : error LNK2001: unresolved external symbol _SSL_library_init
Debug/monprogramme.exe : fatal error LNK1120: 3 unresolved externals
Error executing link.exe.

 
Please  H.E.L.P.

Reply

Marsh Posté le 09-09-2004 à 12:58:08    

Il faut que tu ajoute la lib OpenSSL au projet. Au passage il serait bien d'apprendre comment fonctionne le couple compilateur-linker, histoire de comprendre pourquoi tu as ces messages d'erreurs.

Reply

Marsh Posté le 09-09-2004 à 13:39:01    

Bein ouai mais je croyais justement l'avoir ajouté la lib au projet en faisant ce que m'a dit BlackGoddess un peu plus haut...
 
EDIT :  
 
Alors j'ai ajouté la librairie OpenSSL à mon projet mais j'ai exactement les même erreur au linkage... :/
 
help


Message édité par EagleOne33 le 09-09-2004 à 13:43:32
Reply

Marsh Posté le 09-09-2004 à 14:32:10    

Alors j'ai réussi à trouver la solution. Dites moi ce que vous en pensez....
 
Alors pour résoudre mon problème de départ, 3 choses :  
- Inclure les include dans le projet (Dans VC++, Outils, Options, Dossiers, Include, mettre mon répertoire d'includes .h ...)
- Inclure la librairie au projet (Pareil que précédemment mais dans DOssiers, choisir Librairie et y mettre le répertoire contenant les .lib)
- Enfin ce que je n'avais pas fait, définir les librairies dont on a besoin avec le code :  

Code :
  1. #pragma comment (lib, "libeay32.lib" )
  2. #pragma comment (lib, "ssleay32.lib" )


 
 
Vala.... Si ca peut aider quelqu'un  
(et non me tapez pas dessus, je suis pas super fort en c++ donc bon)

Reply

Marsh Posté le 09-09-2004 à 14:32:10   

Reply

Marsh Posté le 09-09-2004 à 16:14:48    

L'autre solution est d'ajouter les libs au projet, c-à-d comme tu ajouterai un fichier cpp. Et là plus besoin de rajouter des #pragma VC spécifiques. Essaye, cela marche aussi.

Reply

Marsh Posté le 09-09-2004 à 16:22:23    

PUTAIN MAIS MLET DES / DANS LES INCLUDE BORDEL DE CUL A PINE


---------------
brisez les rêves des gens, il en restera toujours quelque chose...  -- laissez moi troller sur discu !
Reply

Marsh Posté le 09-09-2004 à 16:58:35    

ok Jayl je vais essayer
 
Kradeg apprends à parler et après on verra... :/

Reply

Marsh Posté le 09-09-2004 à 17:43:55    

En termes plus corrects, kadreg te dit qu'il est bien mieux de remplacer les \ dans tes includes par des / meme si tu es sous windows (ce sera pareil). Pour des pb de portabilités.

Reply

Marsh Posté le 10-09-2004 à 10:29:05    

oki d'accord je le ferai. Merci beaucoup :)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed