Lig*_*ger 3 c++ ssl boost openssl boost-asio
使用Asio为SSL握手实现代码时,该项目不会生成并引发错误
C:\ Eclipse \ Boost \ boost_1_62_0 / boost / asio / ssl / detail / openssl_types.hpp:19:26:致命错误:openssl / conf.h:没有这样的文件或目录
那么这是否意味着对于使用Asio的SSL,我们需要安装OpenSSL?
好吧,这不是我想提出的重点。问题是,在不要求客户端安装OpenSSL的情况下,还有其他替代方案可以使用Asio SSL吗?换句话说,如何在单个可执行文件中将OpenSSL与应用程序静态绑定?
boost::asio使用OpenSSL的SSL插座:如果您有:
#include <boost/asio/ssl.hpp>
Run Code Online (Sandbox Code Playgroud)
在你的代码,那么你就需要构建OpenSSL和boost。
要构建OpenSSL:
BOOST_NETWORK_ENABLE_HTTPS在项目级别定义宏;OpenSSL包含目录添加到您的包含路径;OpenSSL库目录添加到您的库路径,例如-L$${OPENSSL_ROOT}/lib;Windows,Visual Studio:
LIBS += -llibeay32
LIBS += -llibssleay32
Run Code Online (Sandbox Code Playgroud)
Windows,MinGW:
LIBS += -lssl
LIBS += -lcrypto
Run Code Online (Sandbox Code Playgroud)
Linux,GCC:
LIBS += -lssl
LIBS += -lcrypto
LIBS += -ldl
Run Code Online (Sandbox Code Playgroud)
注意:您的图书馆订单可能存在链接问题。我建议在OpenSSL库之后加入boost库;BTW boost::asio要求libboost_system。
我可以在单个可执行文件中将 OpenSSL 与我的应用程序静态绑定吗?
是的。您可以使用以下选项构建 openssl no-shared,它只会构建静态库:
https://wiki.openssl.org/index.php/Compilation_and_Installation
然后只需将静态存档放在链接命令行上,它将被静态链接 - 但您分发它的人却不会。
但是,为了链接程序,您必须拥有可供编译器/链接器使用的头文件和静态库。
| 归档时间: |
|
| 查看次数: |
4939 次 |
| 最近记录: |