如何利用提振。Python实现Python C/c++混合编程详解

  

  

学习中如果碰到问题,参考官网例子:

  
  

D: \ python boost_1_61_0 \ libs \ \测试

     

参考:提振。Python中英文文档。

  

<>强利用提振。Python实现Python C/c++混合编程

  

<>强关于python与c++混合编程,事实上有两个部分

  
      <李>扩展所谓python程序中调用c/c++代码,其实是先处理c++代码,预先生成的动态链接库,如例子。所以,而在python代码中导入例子;即可使用c/c++的函数。   <李>嵌入c++代码中调用python代码。   
  

两者都可以用python c转换api,解决,具体可以去python官方文档查阅,但是都比较繁琐。

  

对于1,扩展,常用的方案是boost.python以及痛饮。

  

痛饮是一种胶水语言,粘合c++、PYTHON、我前面的图形显示二叉树的文章中提到的就是利用pyqt作界面,调用c++代码使用痛饮生成的,所以动态库。

  

而boost.python则直接转换,可以利用py + +自动生成需要的包装。关于这方面的内容的入门除了boost.python官网,中文的入门资料推荐

  

下面话不多说了,来一起看看详细的介绍吧

  


  

        # include   # include<提高/python.hpp>      使用名称空间性病;   boost:: python使用名称空间;         const char *问候()   {   返回“hello, world”;      }      BOOST_PYTHON_MODULE (hello_ext)   {   def(“打招呼”,问候);   }      python:

        进口hello_ext   打印hello_ext.greet ()      


  

  

导出默认构造的函数的类
  

  c++

        # include   # include<提高/python.hpp>      使用名称空间性病;   boost:: python使用名称空间;      结构体的世界   {   空集(string味精){→味精=味精;}   字符串问候(){返回味精;}      字符串味精;   };      BOOST_PYTHON_MODULE(你好)//导出的模块名字   {   class_(“世界”)   . def(“打招呼”,和世界::问候)   . def(“套”,和世界::集);   }      python:

        进口你好   地球=hello.World() #调用默认构造函数,产生类对象   planet.set(“你好”)#调用对象的方法   打印planet.greet() #调用对象的方法      


  

        # include   # include<提高/python.hpp>      使用名称空间性病;   boost:: python使用名称空间;      结构体的世界   {   世界(string味精:味精(msg){}//增加构造函数   世界(双,双b): b (a)、(b){}//另外一个构造函数   空集(string味精){→味精=味精;}   字符串问候(){返回味精;}   双sum_s(){返回a + b;}   字符串味精;   双的;   双b;   };      BOOST_PYTHON_MODULE(你好)//导出的模块名字   {   class_(“世界”,init ())   . def (init<双double>())//暴露另一个结构   . def(“打招呼”,和世界::问候)   . def(“套”,和世界::集)   . def (“sum_s”和世界::sum_s);   }      

python测试调用:

        进口你好   地球=hello.World (5、6)   planet2=你好。世界(“你好世界”)      打印planet.sum_s ()   打印planet2.greet ()      

如果不想导出任何构造函数,则使用no_init:

        class_(“抽象”,no_init)      

        # include   # include<提高/python.hpp>      使用名称空间性病;   boost:: python使用名称空间;         结构体变量   {   Var(字符串名称):名称(名称),值(){}   字符串常量名称;      浮动值;   };      BOOST_PYTHON_MODULE (hello_var)   {   class_ (“Var”, init ())   .def_readonly(“名字”,和Var:名称)//只读   .def_readwrite(“价值”,和Var:值);//读写   }      

python调用:

        进口hello_var      var=hello_var.Var (“hello_var”)   var.value=https://www.yisu.com/zixun/3.14   # var.name='你好' #错误   打印var.name

如何利用提振。Python实现Python C/c++混合编程详解