boost::asio::ssl::context 施工期间崩溃

boost::asio::ssl::context crash during construction

我不明白为什么以下指令会崩溃:

boost::asio::ssl::context ctx(boost::asio::ssl::context::tlsv12);

我收到以下错误:进程返回 -1073741819 (0xC0000005)

关于异常和据我所知,boost 文档没有提到 boost 和 openssl 版本之间的不兼容问题。

我的环境:

来自 cygwin 的 gcc:C:\cygwin64\x86_64-w64-mingw32-g++.exe

链接器选项:-lws2_32 -lcrypto -lssl

使用 boost 1.78(来自网站的 dl)和 cygwin 的 openssl 1.1.1m 包

这是最简单的例子:

#include <iostream>
#include <boost/asio/ssl/context.hpp>


int main()
{
    std::cout << "before" << std::endl;
    try {
        boost::asio::ssl::context ctx(boost::asio::ssl::context::tlsv12);
    } catch (...) {
        std::cout << "catch" << std::endl;
    }
    std::cout << "after" << std::endl;

    return 0;
}

输出:

before

我安装的 openssl cygwin 包不是一个稳定的包,所以 include 和 lib 文件丢失,我使用的是错误的(与 x86_64-w64-mingw32-g++ 编译器不兼容)。我已经安装了另一个稳定版本,现在可以使用所需的文件了。