3

C++ で記述された Python モジュールを Boost.Python から Pybind11 に移動しています。私の C++ コードは、不透明なポインタを持つ C ライブラリに依存しています。Boost.Python では、こちらのドキュメントを使用して、これらの不透明なポインターを処理しました

Pybind11 の同等のコードが見つかりません。参考までに、Pybind11 を使用して Python に公開する C ヘッダーを次に示します。

typedef struct mytruct* mystruct_t;

void myfunction1(mystruct_t x);

mystruct_t myfunction2();

これは、次のように Boost.Python で公開できます。

BOOST_PYTHON_OPAQUE_SPECIALIZED_TYPE_ID(mystruct)

namespace bpl = boost::python;

BOOST_PYTHON_MODULE(mymodule) {
  bpl::opaque<mystruct>();
  bpl::def("f1", &myfunction1);
  bpl::def("f2", &myfunction2, bpl::return_value_policy<bpl::return_opaque_pointer>());
}
4

1 に答える 1