2013-05-30 47 views
0

我創建了一個通過SWIG調用某些C函數的python腳本。通過SWIG在python函數中使用GList數據類型

我還沒有調用大多數功能問題,但一個特定的函數需要一個爲Glist數據類型作爲參數:

void some_function(GList *guid_list) 

C函數沿着沿的線限定我試圖通過它的夜風創建Python模塊沿

some_list = ['a', 'b', 'c'] 
module_from_swig.some_function(some_list) 

但收到以下錯誤行調用它:

Traceback (most recent call last): 
. 
. 
. 
File "/usr/local/lib/python2.7/dist-packages/module_from_swig.py", line 1828, in some_function 
    return _module_from_swig.some_function(*args) 

TypeError: in method 'some_function', argument 1 of type 'GList *' 

我假設我需要將python列表轉換爲Glist,但不知道如何去做這件事。任何幫助將非常感激。

+0

你得到的錯誤究竟是什麼? – xaxxon

+0

@xaxxon - 我編輯了我的問題,以便處理我收到的錯誤。 – Loftx

回答

1

首先,你的SWIG接口文件需要的GList的定義,那麼你可能能夠與像一個最小的SWIG文件矇混過關:

%module MyModule 

%inline %{ 
#include "Glist.h" 
#include "functions.h" 
%} 

和使用功能,如:

>>> import MyModule 
>>> glist = MyModule.GList() 
>>> glist.some_field = some_value 
>>> glist.some_other_field = some_value 
>>> MyModule.some_function(glist) 

這是非常含糊,但不是很多繼續下去。如果GList比較複雜,則可能需要編寫typemap。提供函數和頭文件的簡單示例以及您正在使用的SWIG .i文件(理想情況下,編譯和演示問題),您將獲得更好的反饋。

+0

感謝您的幫助 - 現在更清楚了。我已經有了一個SWIG .i文件,所以會嘗試進行你所建議的更改並看看會發生什麼。 – Loftx

相關問題