2005年08月13日 星期六 16:29
我用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
2005年08月15日 星期一 22:50
看到一个已有的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> >
2005年08月16日 星期二 08:56
其实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
2005年08月16日 星期二 20:42
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
Zeuux © 2025
京ICP备05028076号