2016-05-30 32 views
5

mam zbudować OpenSSL ręcznie (biblioteki statyczne) po this guide teraz gdy próbuję połączyć moje MFC testową aplikację z libeay32.lib ja się następujące błędy:łączenie z OpenSSL lib statycznie

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 

Wszelkie porady? Z góry dziękuję.

EDYCJA: Użyłem kodu źródłowego OpenSSL 1.0.1t i wiersza poleceń Visual Studio 2008 do budowania 32-bitowych bibliotek statycznych (nie miałem powodzenia z wersją 1.0.2h). Moja aplikacja testowa działa poprawnie podczas dynamicznego łączenia, ale chcę mieć możliwość łączenia się ze statycznymi bibliotekami. Używam OpenSSL dla EVP symetrycznego szyfrowania i deszyfrowania

Odpowiedz

12

gdy próbuję połączyć moje MFC testową aplikację z libeay32.lib otrzymuję następujące błędy ...

Musisz skonfigurować z enable-capieng. Zobacz także Compilation and Installation na archiwum listy adresowej OpenSSL wiki i How to use CAPI engine in OpenSSL.

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

Raz skonfigurowane prawidłowo, trzeba połączyć przeciwko crypt32.lib biblioteki Windows. Zobacz na przykład CertFreeCertificateContext functions. W systemie Windows, to powinno wystarczyć, aby dodać następujące wpisy do pliku źródłowego MSVC:

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

Cześć, dzięki za powtórki, jestem początkujący w zakresie OpenSSL i nie można zupełnie za tobą obawiam. Mam editet moje pytanie dostarczające więcej informacji o moim środowisku. Zrobiłem dokładnie tak, jak napisano samouczek do budowania 32-bitowych bibliotek statycznych i nie było nic wspominanego przy konfiguracji z opcją enable-capieng? Po dodaniu komentarza #pragma (lib, "crypt32"); Moja aplikacja została skompilowana i uruchomiona, ale dostaję wycieki pamięci po zamknięciu aplikacji. – cagi

+0

@cagi - OpenSSL jest pełen wycieków pamięci. Możliwe, że Twoja aplikacja robi wszystko dobrze, a mimo to łapie na nich wyniki. Jednak przed usunięciem wycieków pamięci jako wewnętrznych problemów OpenSSL, należy upewnić się, czyszczenie przed zamknięciem. W tym celu zobacz [Jak prawidłowo odblokować OpenSSL] (http://stackoverflow.com/q/29845527). – jww

+0

Pewnie, dzięki jeszcze raz @jww – cagi