2012-02-20 11 views
5

Estoy tratando de 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 agregar que consigo los errores:Boost SSL con Visual Studio 2010 y OpenSSL

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 " ([email protected][email protected]@[email protected]@[email protected]@[email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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)" ([email protected][email protected]@[email protected]@[email protected]@[email protected]) 
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 añadir el directorio C: \ OpenSSL en Win32 \ lib \, C: \ OpenSSL en Win32 \ lib \ VC \, C: \ OpenSSL -Win32 \ lib \ VC \ static, C: \ OpenSSL-Win32 \ bin, C: \ OpenSSL-Win32 \ include a Project-> General Properties-> Linker-> Library Directories adicionales utilizando las bibliotecas precompiladas de openssl (http: //www.openssl.org/related/binaries.html). También intenté compilar OpenSSL con los mismos errores. Estoy realmente en una pérdida, he intentado todo lo que he buscado Google alrededor de mil veces, intentado IRC, todas las combinaciones de directorios que se me ocurre ...

Mi configuración es: Windows 7 de 64 bits Windows Visual Studio 2010 64 bit Boost 1.47 OpenSSL 1.0.0E y G C/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 el siguiente en un proyecto de consola VS C++:

// SSLServer.cpp: Define el punto de entrada para la aplicación de 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 de antemano.

+0

SÍ yo también tengo este problema como también – jzeus

+0

Tengo este problema también. ¿Alguien logró resolverlo? Por favor enviar de regreso si lo hace. Intenté la sugerencia de Fraser a continuación, pero aún tengo el problema. –

Respuesta

10

Parece que está utilizando 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) de http://www.slproweb.com/products/Win32OpenSSL.html

Después de que se instala (si utiliza rutas predeterminadas), usted debe tener una carpeta C:\OpenSSL-Win64.

Usted debe agregar:

  • C:\OpenSSL-Win64\include a su inclusión adicionales Directorios
  • C:\OpenSSL-Win64\lib\VC\static o C:\OpenSSL-Win64\lib\VC a sus directorios de librerías adicionales dependiendo de si desea que las librerías estáticas o los archivos DLL respectivamente
  • libeay32<XXX>.lib y ssleay32<XXX>.lib a Dependencias adicionales donde <XXX> coincide con cualquier ajuste que tenga para [C/C++]->[Code Generation]->[Runtime Library]
+0

¿Cómo funciona esto con Visual Studio 2015 y Boost.Build, desde la línea de comandos (por ejemplo, a través de un archivo Jam?) –

3

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 del redistributables 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.

0

me encontré con el tema similar (VS2010), métodos resueltas:

1) Propiedades-> C/C++ -> general-> adicionales incluyen Directorios: YourPath \ boost_1_58_0 \ boost_1_58_0 (utilizo 1.58.0 versión)

2) Properties-> Enlazador -> General-> directorios de biblioteca adicionales: YourPath \ boost_1_58_0 \ \ boost_1_58_0 fase \ lib

3) Properties-> Enlazador -> entrada -> dependencias adicionales: libeay32 .lib ssleay32.lib

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