2016-05-30 21 views
5

Ho costruire OpenSSL manualmente (librerie statiche) segue this guide ora quando provo a collegare il mio MFC prova app con libeay32.lib ottengo seguenti errori:collegamento con OpenSSL lib staticamente

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 

Qualche consiglio? Grazie in anticipo.

MODIFICA: Ho utilizzato il codice sorgente OpenSSL 1.0.1t e il prompt dei comandi di Visual Studio 2008 per la creazione di librerie statiche a 32 bit (non ho avuto successo con la versione 1.0.2h). La mia app di test funziona bene quando si collega dinamicamente, ma voglio essere in grado di collegarmi con le libiche statiche. Sto usando OpenSSL per EVP simmetrica crittografia e la decrittografia

risposta

12

quando provo a collegare il mio MFC prova app con libeay32.lib ricevo seguenti errori ...

È necessario configurare con enable-capieng. Vedi anche Compilation and Installation nella wiki di OpenSSL e nell'archivio della mailing list How to use CAPI engine in OpenSSL.

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

Una volta configurato correttamente, è necessario collegare contro libreria di Windows' crypt32.lib. Vedere, ad esempio, CertFreeCertificateContext functions. Su Windows, dovrebbe essere sufficiente per aggiungere quanto segue al file sorgente MSVC:

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

Ciao, grazie per la riproduzione, io sono un novizio per quanto riguarda OpenSSL e non riesco a seguirti ho paura. Ho modificato la mia domanda fornendo maggiori informazioni sul mio ambiente. Ho fatto esattamente come detto tutorial per la creazione delle librerie statiche a 32 bit e non c'era nulla di menzionato per la configurazione con l'opzione enable-capieng? Dopo ho aggiunto il commento #pragma (lib, "crypt32"); la mia app è stata compilata ed eseguita ma ricevo perdite di memoria dopo aver chiuso l'app – cagi

+0

@cagi - OpenSSL è pieno di perdite di memoria. È possibile che la tua app stia facendo tutto nel modo giusto, pur rilevando i risultati su di essi. Tuttavia, prima di eliminare le perdite di memoria come problemi interni di OpenSSL, accertarsi di eseguire la pulizia prima dello spegnimento. Per questo, vedere [Come disinstallare correttamente OpenSSL] (http://stackoverflow.com/q/29845527). – jww

+0

Certo, grazie ancora @ jww – cagi

Problemi correlati