boostorg / boostorg/python

Beast Socket from Boost Python Package Kills Kernel

未关闭
#448 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
C++
星标
537
派生
223
平均合并
11 小时 22 分钟
30 天内合并 PR
2

描述

For some reason when exposing the below to python using Boost Python, the unique pointer constructor (the obj constructor) fails. This used to work for me before, not sure why it stopped.

```
#pragma once
#include
#include
#include
#include

//Socket
class Contextable
{
public:
Contextable() : m_ssl(boost::asio::ssl::context::sslv23_client) {}

protected:
boost::asio::io_context m_ctx;
boost::asio::ssl::context m_ssl;
};

class SocketExample : protected Contextable
{
using SocketImp = boost::beast::websocket::stream>;
public:
SocketExample()
{
}

void constructSocket()
{
m_ws = std::make_unique(m_ctx, m_ssl); //kills jupyter kernel
std::cout << "DONE. OPEN FLAG: " << m_ws->is_open() << std::endl;
}

private:
std::unique_ptr m_ws;
};

//ExampleModule
#include

BOOST_PYTHON_MODULE(ExampleModule)
{
boost::python::class_, boost::noncopyable>("SocketExample")
.def(boost::python::init<>())
.def("constructSocket", &SocketExample::constructSocket)
;
}
```

```
##Jupyter Notebook
import ExampleModule as m
socket = m.SocketExample()
socket.constructSocket() ##kills kernel
```

Any idea what I am doing wrong? When running this using c++ as follows does not fail.
```
SocketExample sk;
sk.constructSocket(); //works fine when run inside main.cpp
```

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。