2010-10-25 67 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