2010-01-23 3 views
1

J'ai installé openssl 0.9.8l et ajouté les chemins d'inclusion et de bibliothèque aux répertoires VS. (Je l'ai déjà fait lors de l'installation de bibliothèques boost). Mais je continue d'avoir des erreurs de liens.erreurs de l'éditeur de liens avec openssl on VS 2008

De toute façon, je peux résoudre le même problème.

erreurs sont les suivantes

Error 1 error LNK2019: unresolved external symbol _BN_free referenced in function _main RSA.obj RSA 
Error 2 error LNK2019: unresolved external symbol _BN_bn2dec referenced in function _main RSA.obj RSA 
Error 3 error LNK2019: unresolved external symbol _BN_num_bits referenced in function _main RSA.obj RSA 
Error 4 error LNK2019: unresolved external symbol _BN_generate_prime referenced in function _main RSA.obj RSA 
Error 5 error LNK2019: unresolved external symbol _BN_new referenced in function _main RSA.obj RSA 
Error 6 fatal error LNK1120: 5 unresolved externals C:\Visual Studio 2008\Projects\RSA\Debug\RSA.exe RSA 

Répondre

0

Vous devez également spécifier les noms de bibliothèque en tant que « dépendances supplémentaires ».

Dans le projet | Propriétés, vous devez aller à Linker | Contribution. Dans Dépendances supplémentaires, vous devez fournir les noms des bibliothèques.

Mise à jour

Vous souhaitez créer un lien dans libeay32.lib et ssleay32.lib.

Vous pouvez avoir plusieurs versions appelées libeayMT.lib ou libeayMDd.lib. Ceux-ci sont construits contre différentes versions de la bibliothèque d'exécution et vous voulez choisir celui qui correspond à la façon dont vous construisez votre programme. Vous pouvez également le trouver dans la boîte de dialogue Propriétés en C/C++ | Génération de code | Bibliothèque d'exécution.

+0

merci, je l'ai fait, mais maintenant je reçois ce Erreur LNK1104 d'erreur fatale: ne peut pas ouvrir le fichier 'C: \ OpenSSL.obj' \t RSA \t RSA il y a pas OpenSSL.obj à cet endroit. –

+0

Le fichier sera un .lib, pas un fichier .obj. Regardez dans le chemin de la bibliothèque que vous avez ajouté pour voir le nom du fichier. –

+0

Je ne sais pas quelle bibliothèque dois-je mentionner. je suis toujours obtenir cette erreur Erreur erreur LNK2001: symbole externe non résolu _BN_free \t RSA.obj \t RSA Erreur erreur LNK2001: symbole externe non résolu _BN_num_bits \t RSA.obj \t RSA Erreur erreur LNK2001: symbole externe non résolu _BN_bn2dec \t RSA.obj \t RSA erreur erreur LNK2001: symbole externe non résolu _BN_new \t RSA.obj \t RSA Erreur erreur LNK2001: symbole externe non résolu _BN_generate_prime \t RSA.obj \t RSA Erreur LNK1120 erreur fatale: 5 externals non résolues \t juste que l'erreur de liens a changé à LNK2001 de LNK2019 –

0

OpenSSL est par défaut Multithreaded DLL (/MD). Tout comme Klatchko l'a déjà dit, vous devez d'abord configurer votre Runtime Library sur/MD et ajouter les libeay32MD.lib et ssleay32MD.lib correspondants (ils sont dans \ Microsoft Visual Studio 9.0 \ VC \ lib sur mon ordinateur) aux dépendances supplémentaires sous Linker | Contribution. (Assurez-vous de copier d'abord les fichiers .lib dans les bons répertoires!)

J'ai eu le même problème et c'est ainsi que je l'ai corrigé!

BTW, j'utilise la version binaire d'OpenSSL pour Windows. Vous pouvez le trouver sur le site officiel d'OpenSSL, sous related/binaries.

À la votre!

Z.Zen