Python论坛  - 讨论区

标题:Re: [python-chinese] 将python嵌入到C++程序后,python怎么调用c++中一个自定义类的方法

2005年08月13日 星期六 16:29

Hou Ming Yuan houmingyuan at gmail.com
Sat Aug 13 16:29:25 HKT 2005

我用SWIG做过此种调用。
1)用SWIG作一个扩展模块,包含你要在C++中调用的类
2)在你想要使用这个类的python模块中,import上一步中的扩展模块
3)在C++中嵌入的python脚本,就可以使用这个类了
 在05-8-10,jeekchen <jeekchen at 163.com> 写道: 
> 
> 您好!
> 
> 将python嵌入到C++程序后,python怎么调用c++中一个自定义类的方法?
> 整个流程不明白,请各位提供一些例子,资源,或者是解决思路,谢谢!
> 
>> 礼!
> 
> 
> jeekchen
> jeekchen at 163.com
> 2005-08-10
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050813/9096528a/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月15日 星期一 22:50

saddle saddle at gmail.com
Mon Aug 15 22:50:08 HKT 2005

看到一个已有的cpp程序的源代码, 用swig包装成可以用python调用的源代码, 是
不是比较容易的一种方式, 而且这种方式也比较简单?
On Sat, 13 Aug 2005 16:29:25 +0800
Hou Ming Yuan <houmingyuan at gmail.com> 撰写于:

houmingyuan> 我用SWIG做过此种调用。
houmingyuan> 1)用SWIG作一个扩展模块,包含你要在C++中调用的类
houmingyuan> 2)在你想要使用这个类的python模块中,import上一步中的扩展模块
houmingyuan> 3)在C++中嵌入的python脚本,就可以使用这个类了
houmingyuan>  在05-8-10,jeekchen <jeekchen at 163.com> 写道: 
houmingyuan> > 
houmingyuan> > 您好!
houmingyuan> > 
houmingyuan> > 将python嵌入到C++程序后,python怎么调用c++中一个自定义类的方法?
houmingyuan> > 整个流程不明白,请各位提供一些例子,资源,或者是解决思路,谢谢!
houmingyuan> > 
houmingyuan> > 致
houmingyuan> > 礼!
houmingyuan> > 
houmingyuan> > 
houmingyuan> > jeekchen
houmingyuan> > jeekchen at 163.com
houmingyuan> > 2005-08-10
houmingyuan> > 
houmingyuan> > 
houmingyuan> > _______________________________________________
houmingyuan> > python-chinese list
houmingyuan> > python-chinese at lists.python.cn
houmingyuan> > http://python.cn/mailman/listinfo/python-chinese
houmingyuan> > 
houmingyuan> > 
houmingyuan> >



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月16日 星期二 08:56

大熊 bearsprite at gmail.com
Tue Aug 16 08:56:57 HKT 2005

其实swig项目的就是把现有的c/c++库转换为python扩展,因为它生成的source可读性是极差的

如果你需要重新编写扩展,使用boost::python或者pycxx之类的比较好

在05-8-15,saddle <saddle at gmail.com> 写道:
> 
> 看到一个已有的cpp程序的源代码, 用swig包装成可以用python调用的源代码, 是
> 不是比较容易的一种方式, 而且这种方式也比较简单?
> On Sat, 13 Aug 2005 16:29:25 +0800
> Hou Ming Yuan <houmingyuan at gmail.com> 撰写于:
> 
> houmingyuan> 我用SWIG做过此种调用。
> houmingyuan> 1)用SWIG作一个扩展模块,包含你要在C++中调用的类
> houmingyuan> 2)在你想要使用这个类的python模块中,import上一步中的扩展模块
> houmingyuan> 3)在C++中嵌入的python脚本,就可以使用这个类了
> houmingyuan> 在05-8-10,jeekchen <jeekchen at 163.com> 写道:
> houmingyuan> >
> houmingyuan> > 您好!
> houmingyuan> >
> houmingyuan> > 将python嵌入到C++程序后,python怎么调用c++中一个自定义类的方法?
> houmingyuan> > 整个流程不明白,请各位提供一些例子,资源,或者是解决思路,谢谢!
> houmingyuan> >
> houmingyuan> > 致
> houmingyuan> > 礼!
> houmingyuan> >
> houmingyuan> >
> houmingyuan> > jeekchen
> houmingyuan> > jeekchen at 163.com
> houmingyuan> > 2005-08-10
> houmingyuan> >
> houmingyuan> >
> houmingyuan> > _______________________________________________
> houmingyuan> > python-chinese list
> houmingyuan> > python-chinese at lists.python.cn
> houmingyuan> > http://python.cn/mailman/listinfo/python-chinese
> houmingyuan> >
> houmingyuan> >
> houmingyuan> >
> 
> 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 



-- 
茫茫人海,你是我的最爱
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050816/9796bb5e/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2005年08月16日 星期二 20:42

Hou Ming Yuan houmingyuan at gmail.com
Tue Aug 16 20:42:32 HKT 2005

to saddle:
你说的很对,跟我的想法差不多了。
C++代码分成两部分,一部分时需要导出到脚本使用的C1,一部分是不需要的C2
用SWIG可以把C1作为输入,生成一个module1,产生两个文件C++代码MC, python代码MP
嵌入脚本为S1,S1可以import module1
 现在嵌入过程就是
 Py_Initialzie()
 module1_init
 调用Py_ImportModule(S1)
 用PyObject_CallObject()调用S1中的函数
 to 大熊:
这位老兄的理由很奇怪,swig生成的代码设计初衷就不是用来读的,只不过是做了些包装,隐藏一些低层的细节,没有逻辑性的东西。
我认为现在为止,swig还是最好的用的把C++封装成python模块的工具。可以试试这个例子:
class A
{
public:
 virtual ~A() = 0;
 int GetX() = 0;
}
A* CreateA();
试试用SWIG和boost::python看看那个更好用。
 在05-8-16,大熊 <bearsprite at gmail.com> 写道: 
> 
> 其实swig项目的就是把现有的c/c++库转换为python扩展,因为它生成的source可读性是极差的
> 
> 如果你需要重新编写扩展,使用boost::python或者pycxx之类的比较好
> 
> 在05-8-15,saddle <saddle at gmail.com> 写道: 
> > 
> > 看到一个已有的cpp程序的源代码, 用swig包装成可以用python调用的源代码, 是
> > 不是比较容易的一种方式, 而且这种方式也比较简单?
> > On Sat, 13 Aug 2005 16:29:25 +0800
> > Hou Ming Yuan <houmingyuan at gmail.com> 撰写于:
> > 
> > houmingyuan> 我用SWIG做过此种调用。 
> > houmingyuan> 1)用SWIG作一个扩展模块,包含你要在C++中调用的类
> > houmingyuan> 2)在你想要使用这个类的python模块中,import上一步中的扩展模块
> > houmingyuan> 3)在C++中嵌入的python脚本,就可以使用这个类了
> > houmingyuan> 在05-8-10,jeekchen < jeekchen at 163.com> 写道:
> > houmingyuan> >
> > houmingyuan> > 您好!
> > houmingyuan> >
> > houmingyuan> > 将python嵌入到C++程序后,python怎么调用c++中一个自定义类的方法?
> > houmingyuan> > 整个流程不明白,请各位提供一些例子,资源,或者是解决思路,谢谢! 
> > houmingyuan> >
> > houmingyuan> > 致
> > houmingyuan> > 礼!
> > houmingyuan> >
> > houmingyuan> >
> > houmingyuan> > jeekchen
> > houmingyuan> > jeekchen at 163.com 
> > houmingyuan> > 2005-08-10
> > houmingyuan> >
> > houmingyuan> >
> > houmingyuan> > _______________________________________________
> > houmingyuan> > python-chinese list
> > houmingyuan> > python-chinese at lists.python.cn
> > houmingyuan> > http://python.cn/mailman/listinfo/python-chinese
> > houmingyuan> >
> > houmingyuan> >
> > houmingyuan> >
> > 
> > 
> > _______________________________________________
> > python-chinese list
> > python-chinese at lists.python.cn 
> > http://python.cn/mailman/listinfo/python-chinese
> > 
> 
> 
> 
> -- 
> 茫茫人海,你是我的最爱 
> _______________________________________________
> python-chinese list
> python-chinese at lists.python.cn
> http://python.cn/mailman/listinfo/python-chinese
> 
> 
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20050816/08fed7cd/attachment-0001.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号