1楼:匿名用户
在封装的**间传递指针你要确保他们运行在相同的地址空间里,还要保证指针指向的内存的生存期是安全的,否则这种思路就是错误的。实现方法举例如下:
1、定义了c 结构体和函数如下
typedef struct nameage
nameage , *nameagepointer;
void test(nameagepointer p) // 接收结构体指针
2、python定义结构体如下
#python中结构体定义
class pystruct():
def __init__(self, name, age):
self.name = name
self.age = age
fred = pystruct("fred", 5)
3、假设把第1步里的test封装成example模块,python导入example(既然你都会swig了,这个过程就不啰嗦了)
>>>import example
>>>example.test(pointer(fred))
以上是基本思路,因为搭建开发环境和过程比较繁杂,没有验证过,但是应该没有大问题
python如何传递给c++一个结构体指针?前提是swig封
2楼:mexico卡卡
在封装的**间传递指针你要确保他们运行在相同的地址空间里,还要保证指针指向的内存的生存期是安全的,否则这种思路就是错误的。实现方法举例如下:
1、定义了c 结构体和函数如下
typedef struct nameage
nameage , *nameagepointer;
void test(nameagepointer p) // 接收结构体指针
2、python定义结构体如下
#python中结构体定义
class pystruct():
def __init__(self, name, age):
self.name = name
self.age = age
fred = pystruct("fred", 5)
3、假设把第1步里的test封装成example模块,python导入example(既然你都会swig了,这个过程就不啰嗦了)
>>>import example
>>>example.test(pointer(fred))
以上是基本思路,因为搭建开发环境和过程比较繁杂,没有验证过,但是应该没有大问题
怎么用swig实现在python中继承c++接口类
3楼:
目前已到问题是这样的:我用swig封装了c++函数供python来调用 c++函数需要传入 结构体指针 引用等参数 可是我不知道python怎么传递这种类型的参数 麻烦大神帮忙解答
python调用swig的问题,如何把‘!=’wrap起来。只是简单的代替?
4楼:
我没用过swig,一直是用boost::python来封装c++的。
猜测这个问题是因为swig中没法对重载操作符函数进行直接封装。可否将operator!=直接封装成python对象的__ne__()方法。
__ne__()是python对象内嵌的“不等”操作符函数。
如果是boost::python的话,应该可以直接这样做,不知道swig里可行不可行。
5楼:匿名用户
试试pypy~这个东西很新很强大~
如何实现 c/c++ 与 python 的通信
6楼:匿名用户
一般c/c++和python混合编程,问题分两种:
python调用c/c++
c/c++调用python
对于1,使用ctypes很容易。如果不想给c++库编写一套c接口,也可以使用swig来直接wrap到c++上。
对于2就比较麻烦。实际上你要做的是使用c++调用python的解释器,并且将c++的变量封装成pyobject之类的结构体作为参数传递给python接口。具体方法不了,自行google,有很多资料。
c/c++扩展python,采用**机制,怎么回传函数
7楼:吾不愿意放弃
属于混合编程来的问题。自较全面的介绍一下,不仅限于题主提出的问题。以下讨论中,python指它的标准实现,即cpython(虽然不是很严格)本文分4个部分c/c++调用python(基础篇)—仅讨论python官方提供的实现方式python调用c/c++(基础篇)—仅讨论python官方提供的实现方式c/c++调用python(高级篇)—使用cythonpython调用c/c++(高级篇)—使用swig练习本文中的例子,需要搭建python扩发环境。
具体细节见搭建python扩发环境-蛇之魅惑-知乎专栏1c/c++调用python(基础篇)python本身就是一个c库。你所看到的可执行体python只不过是个stub。真正的python实体在动态链接库里实现,在windows平台上,这个文件位于%systemroot%\system32\python27.
dll。