Undefined reference to SSL_library_init et SSL_load_error_strings

Je me suis mise en œuvre d'un code d'OpenSSL et ont déjà inclus nécessaire fichiers d'en-tête, mais j'ai toujours des erreurs comme *

undefined reference to SSL_library_init

Je suppose que c'est une erreur de couplage plutôt que d'une erreur de compilation.

Je suis en œuvre en boîte Linux à l'aide de slickeditor.

Et comment êtes-vous invoquant l'éditeur de liens? Êtes-vous en lui ordonnant de le lier avec la bibliothèque OpenSSL, comme avec -lcrypto pour gcc?
nope. la machine je me suis déjà a openssl. quand je fais qui openssl il montre être chemin comme /usr/bin/openssl. Donc, la prochaine étape que j'ai fait était d'inclure les fichiers d'en-tête dans mon code existant, puis dans slickeditor bien je j'ai essayé d'inclure -llibeay32 et -lssleay32. Mais pas de joie
La bibliothèque OpenSSL est appelé libcrypto. Lien avec avec -lcrypto. Je ne sais rien à propos de SlickEdit. Est-il invoquer le compilateur et l'éditeur de liens pour vous, est-ce fait dans un makefile, ou pensez-vous le faire sur une ligne de commande? En quelque sorte, vous devez dire à l'éditeur de liens lien vers libcrypto. Pour en invoquant gcc en ligne de commande, cela signifie l'ajout de l'option -lcrypto.
Toutes mes excuses, SSL_library_init est dans libssl, de sorte que le lien option serait -lssl. ldd $(which openssl) va vous montrer comment votre openssl est lié et où les bibliothèques sont. Si cela ne fonctionne toujours pas, peut-être que le répertoire n'est pas sur le chemin de l'éditeur de liens. Vous pouvez ajouter ce chemin avec -Lpath, comme -L/lib/
Vous devriez obtenir un test minimal de cas de travail sur la ligne de commande. #include "whatever" \n int main(void) { SSL_library_init(blah, blah, blah); return 0; } et puis g++ my_minimal_test_case.c++ -lssl. Si cela fonctionne, alors vous ne comprenez pas votre éditeur/IDE. Si elle n'est pas le cas, alors vous avez quelques problème de configuration.

OriginalL'auteur samprat | 2011-04-08