visual-studio-2010 boost openssl

Boost SSL con Visual Studio 2010 y OpenSSL



visual-studio-2010 (3)

Parece que estás usando la versión de 32 bits de OpenSSL en una máquina de 64 bits.

Intente descargar la versión de 64 bits (Win64 OpenSSL v1.0.0g) desde http://www.slproweb.com/products/Win32OpenSSL.html

Después de que está instalado (si usa las rutas predeterminadas), debe tener una carpeta C:/OpenSSL-Win64 .

Debe agregar:

  • C:/OpenSSL-Win64/include a sus directorios de inclusión adicionales
  • C:/OpenSSL-Win64/lib/VC/static o C:/OpenSSL-Win64/lib/VC a sus directorios de biblioteca adicionales dependiendo de si desea las libs estáticas o las dlls respectivamente
  • libeay32<XXX>.lib y ssleay32<XXX>.lib a Dependencias Adicionales donde <XXX> coincide con la configuración que tenga para [C/C++]->[Code Generation]->[Runtime Library]

Estoy intentando compilar el servidor ASIO SSL de Boost 1.47 y ejemplos de clientes. Puedo incorporar Boost con éxito a mi proyecto, pero no puedo incorporar OpenSSL. Cuando intento agregarlo obtengo los errores:

1>SSLServer.obj : error LNK2019: unresolved external symbol _ERR_reason_error_string referenced in function "public: virtual class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > __thiscall boost::asio::error::detail::ssl_category::message(int)const " (?message@ssl_category@detail@error@asio@boost@@UBE?AV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@Z) 1>SSLServer.obj : error LNK2019: unresolved external symbol _CRYPTO_set_id_callback referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::do_init(void)" (??0do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _CRYPTO_set_locking_callback referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::do_init(void)" (??0do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _CRYPTO_num_locks referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::do_init(void)" (??0do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _SSL_load_error_strings referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::do_init(void)" (??0do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _SSL_library_init referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::do_init(void)" (??0do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _ENGINE_cleanup referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::~do_init(void)" (??1do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _CONF_modules_unload referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::~do_init(void)" (??1do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _CRYPTO_cleanup_all_ex_data referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::~do_init(void)" (??1do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _EVP_cleanup referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::~do_init(void)" (??1do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _ERR_remove_state referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::~do_init(void)" (??1do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>SSLServer.obj : error LNK2019: unresolved external symbol _ERR_free_strings referenced in function "public: __thiscall boost::asio::ssl::detail::openssl_init_base::do_init::~do_init(void)" (??1do_init@openssl_init_base@detail@ssl@asio@boost@@QAE@XZ) 1>C:/Users/Epicism/Documents/Visual Studio 2010/Projects/SSLServer/Debug/SSLServer.exe : fatal error LNK1120: 12 unresolved externals 1> 1>Build FAILED.

He intentado agregar el directorio C: / OpenSSL-Win32 / lib /, C: / OpenSSL-Win32 / lib / VC /, C: / OpenSSL-Win32 / lib / VC / static, C: / OpenSSL-Win32 / bin, C: / OpenSSL-Win32 / include a Project-> General Properties-> Linker-> Additional Library Directories usando las bibliotecas precompiladas de openssl (http://www.openssl.org/related/binaries.html). También intenté compilar OpenSSL con los mismos errores. Estoy realmente perdido, he intentado todo lo que he buscado en Google unas mil veces, he intentado con IRC, cada combinación de directorios en los que puedo pensar ...

Mi configuración es: Windows 7 64-bit Windows Visual Studio 2010 64 bit Boost 1.47 OpenSSL 1.0.0E y GC / C ++ Directorios de inclusión adicionales: C: / Archivos de programa (x86) / boost / boost_1_47; C: / openssl / include /; C: / OpenSSL-Win32 / lib;% (AdditionalIncludeDirectories) Proyecto-> Propiedades generales-> Enlazador-> Directorios de biblioteca adicionales: C: / Archivos de programa (x86) / boost / boost_1_47 / lib; C: / openssl / lib; C : / openssl;% (AdditionalLibraryDirectories) - He intentado agregar todos los directorios a esta propiedad también ...

En este momento estoy tratando de compilar lo siguiente en un proyecto de consola de VS C ++:

// SSLServer.cpp: define el punto de entrada para la aplicación de la consola. //

#include "stdafx.h" #include <cstdlib> #include <iostream> #include <boost/bind.hpp> #include <boost/asio.hpp> #include <boost/asio/ssl.hpp> int _tmain(int argc, _TCHAR* argv[]) { return 0; }

Gracias por adelantado.


Me las arreglé para construir su pequeño programa anterior mediante la vinculación con la versión de 32 bits de la biblioteca de Boost junto con la versión de 32 bits de OpenSSL. También necesitará la versión de 32 bits de los redistribuibles también. El error está presente en Boost versión 1.51 y 1.52, que son las únicas versiones que probé.

Creo que hay un error en la versión de 64 bits de la biblioteca ASIO. Aunque es posible que se trate de algún tipo de problema de configuración que haya afectado a muchos otros. He enviado un informe de error de Boost sobre el problema.


Me encontré con el problema similar (VS2010), métodos resueltos:

1) Propiedades-> C / C ++ -> generales-> directorios adicionales: yourpath / boost_1_58_0 / boost_1_58_0 (uso la versión 1.58.0)

2) Propiedades-> Enlazador -> general-> directorios de biblioteca adicionales: yourpath / boost_1_58_0 / boost_1_58_0 / stage / lib

3) Propiedades-> Enlazador -> Entrada -> Dependencias adicionales: libeay32.lib ssleay32.lib

Estos dos archivos .lib se copian del directorio de instalación de openssl.