2016-05-30 13 views
5

Ich habe openssl bauen manuell (statische Bibliotheken) nach this guide jetzt, wenn ich versuche, meinen MFC Test-App mit libeay32.lib verknüpfen werde ich Fehler folgenden:Verknüpfung mit openssl lib statisch

1>Linking... 
1>libeay32.lib(e_capi.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function _capi_free_key 
1>libeay32.lib(e_capi.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function _capi_get_prov_info 
1>libeay32.lib(e_capi.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function _capi_open_store 
1>libeay32.lib(e_capi.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function _capi_find_cert 
1>libeay32.lib(e_capi.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function _capi_find_cert 
1>libeay32.lib(e_capi.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function _capi_find_key 
1>libeay32.lib(e_capi.obj) : error LNK2019: unresolved external symbol [email protected] referenced in function _capi_load_ssl_client_cert 

Jede Beratung? Danke im Voraus.

EDIT: Ich habe OpenSSL 1.0.1t Quellcode und Visual Studio 2008 Eingabeaufforderung für den Aufbau von 32-Bit-statischen Bibliotheken verwendet (ich hatte keinen Erfolg mit 1.0.2h Version). Meine Test-App funktioniert gut, wenn ich dynamisch verlinke, aber ich möchte mit statischen Bibliotheken verlinken können. Ich bin mit OpenSSL für EVP Symmetrische Verschlüsselung und Entschlüsselung

Antwort

12

wenn ich versuche, meine MFC Test-App mit libeay32.lib zu verknüpfen ich folgende Fehler ...

Sie müssen sich mit enable-capieng konfigurieren. Siehe auch Compilation and Installation im OpenSSL Wiki und How to use CAPI engine in OpenSSL Mailinglisten-Archiv.

error LNK2019: unresolved external symbol [email protected] referenced in function _capi_free_key 
... 

Einmal richtig konfiguriert haben, müssen Sie verknüpfen gegen crypt32.lib Bibliothek von Windows. Siehe beispielsweise CertFreeCertificateContext functions. Unter Windows sollte es genug sein, um die folgenden auf Ihre MSVC Quelldatei hinzuzufügen:

#pragma comment (lib, "crypt32"); 
+0

Hallo, danke für die Wiedergabe, ich bin ein Neuling in Bezug auf OpenSSL und kann Ihnen nicht ganz folgen fürchte ich. Ich habe meine Frage bearbeitet, um weitere Informationen zu meiner Umgebung zu erhalten. Ich habe genau so getan, wie das Tutorial für die Erstellung der 32-Bit-statischen Bibliotheken gesagt hat, und es wurde nichts zur Konfiguration mit der Option enable-capieng erwähnt. Nachdem ich #pragma comment (lib, "crypt32") hinzugefügt habe; Meine App kompiliert und ausgeführt, aber ich bekomme Speicherverluste beim Schließen der App – cagi

+0

@cagi - OpenSSL ist voll von Speicherlecks. Es ist möglich, dass deine App alles richtig macht, aber dennoch Erkenntnisse über sie sammelt. Bevor Sie die Speicherlecks jedoch als interne OpenSSL-Probleme ablehnen, müssen Sie vor dem Herunterfahren sicherstellen, dass sie bereinigt werden. Siehe hierzu [So OpenSSL ordnungsgemäß initialisieren] (http://stackoverflow.com/q/29845527). – jww

+0

Sicher wird, danke nochmal @jww – cagi