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>());
}