簡體   English   中英

提升python,在嵌入時從python調用c ++函數

[英]Boost python, calling c++ functions from python when embedded

我目前有以下內容:

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似乎沒有像class_那樣返回一個boost::python::object

我的問題是,如何讓第一個測試用例按預期工作? 其次是我在第二個代碼片段“正確”中公開我的類型的方式?

修復很簡單,但在本頁的文檔中沒有提到:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM