c++和python交互,python怎么和c++一起使用

  c++和python交互,python怎么和c++一起使用

  Ctypes是python的外部库,可以用Python语言调用编译好的C语言函数和数据类型,交换数据。ctypes的官方文件在https://docs.python.org/3/library/ctypes.html.

  1、ctypes基本数据类型映射表

  2、python调用c语言的函数库

  (1)生成c语言函数

  #步骤1:测试. c

  # includestdio.h

  intadd(inta,intb)

  {

  return b;

  }(2)编译动态链接库生成libtest.so文件(DLL)

  gcc-fpic-shared test . c-o libtest . so(3)调用DLL文件

  #Step3:test.py

  fromctypesimport*

  Mylib=CDLL(libtest.so )或CDLL。LoadLibrary(libtest.so )

  add=mylib.add

  Add.argtypes=[c_int,c_int]#参数类型,两个int(c _ int是ctypes的一种类型,见上表)

  Add.restype=c_int#返回值类型,int(c_int是ctypes的类型,见上表)

  总和=加(3,6)3、指针和引用

  给指针实例赋值只会改变它所指向的内存地址,而不会改变内存的内容。该实例有一个contents属性,该属性返回由该指针指向的对象。

  fromctypeimport*

  i=c_int(1)

  pi=指针(c_int)(i)

  pi2=指针(I)

  Print.contents #返回对象指针的值

  printpi2.contentsPOINTER和POINTER的区别在于,指针返回实例,指针返回类型。

  4、结构类型数据

  结构和联合必须继承结构和联合的基本类,它们都是在ctypes模块中定义的。每个子类必须定义一个字段属性。fields是一个二维元组列表,包含每个字段的名称和类型。此字段类型必须是ctypes类型,如c_int,或者继承ctypes的任何其他类型,如结构、联合、数组、指针等。

  fromctypesimport*

  导入类型

  classTest(结构):

  _fields_=[(x ,c_int),( y ,c_char)]

  1=test (1,2)如果一个结构用于链表操作,即当它包含一个指向该结构的指针时,需要定义如下:

  fromctypesimport*

  导入类型

  classTest(结构):

  及格

  测试。_ fields _=[(x ,c _ int),( y ,c _ char),( next ,pointer (test))]热门IT软件开发工作室,大量免费python视频教程,欢迎在线学习!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: