2010-10-25 36 views
1

我已经用SWIG封装了一些C代码来将它用作python库。在Python和C之间实现回调

在这个框架内,我编写的一些python代码调用了一个C函数,它返回一个字符串。但是,为了创建字符串,C函数需要排序,我已经在Python中实现了这一排序。我将如何去实现这个使用回调?

我将其看作以下多步骤过程。

1)的Python实例化对象C: 进口test_Objects #test_Objects是已缠绕 C = test_objects.my_class()

2)调用my_class对象,它返回对相关方法C文件的字符串: txt_1 = “字符串1” txt_2 - “字符串2” 结果= C.sorted_string(txt_1,txt_2)

2.1)我想sorted_string调用下面的Python函数,它返回一个排序列表。

def sorted_string([my_list]): 
     ..... 
     ..... 
     return your_list 

2.2)Sorted_string将利用列表来生成结果。

我将如何实施步骤2.1?

回答

0

PyObject_Call*()功能可以用来调用一个Python函数或方法从C.

+0

谢谢。有关如何通过swig实现这一点的任何想法? – Matt 2010-10-25 16:26:02

+0

没有。但是一旦你得到一个函数对象,它就结束了。 – 2010-10-25 16:26:34

0

这不是专门针对你的问题,但这里是我问了一个例子:swig-passing-argument-to-python-callback-function

希望这是有益。

+0

joon:我早些时候看到你的帖子,那是什么促使我问我的问题。我看到callback.c和callback.i。你能否给我一个指向你的.py文件的指针(你写的那个,不是由SWIG生成的),它包含callback.c调用的函数?另外,我注意到你没有一个callback.h文件? SWIG不需要吗? – Matt 2010-10-26 14:44:04