3

私は現在、次のものを持っています:

namespace py=boost::python;

//C++
void f() {
    std::cout << "hello world\n";
}

//I am not precious about this, if it can be done without a module that would be great
BOOST_PYTHON_MODULE(test)
{
    py::def("f", f);
}

int main() {
    auto main_module    =py::import("__main__");
    auto main_namespace =main_module.attr("__dict__");
    //???????
    auto result=py::exec_file("t.py", main_namespace);
}

//t.py
f()

f を呼び出そうとしていますが、それを機能させるために必要な接着剤がわかりません。私ができる授業で

 int main() {
     //...

     py::obejct p_my_type=py::class_<my_type>("my_type").def("f", &my_type::f);
     main_namespace["my_type"]=p_my_type;

     //...

ただしboost::python::def、like dos を返すboost::python::objectようには見えclass_ません

私の質問は、最初のテスト ケースを期待どおりに動作させるにはどうすればよいかということです。次に、2 番目のコード スニペットで自分の型を公開する方法は「正しい」ですか?

4

1 に答える 1

0

修正は簡単でしたが、このページのドキュメントには記載されていませんでした:

http://www.boost.org/doc/libs/1_55_0/libs/python/doc/tutorial/doc/html/python/embedding.html

私はこれを行う必要がありました:

auto main_module    =py::import("__main__");
auto main_namespace =main_module.attr("__dict__");
inittest();
auto result=py::exec_file("t.py", main_namespace);


from test import f
f()
于 2013-11-14T23:10:36.027 に答える