boostorg / boostorg/python

Beast Socket from Boost Python Package Kills Kernel

オープン
#448 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C++
スター
537
フォーク
223
平均マージ
11時間 22分
マージ済み PR(30日)
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 を短くまとめたダイジェスト。