2012-10-02 32 views
1

這裏是我的C++代碼:如何使用痛飲治療無效*函數參數爲Python字符串

struct Impl 
{ 
    DT* data_ptr_; 

    Impl(void* data_ptr) 
    : data_ptr_((DT*)data_ptr) 
    { 
    //do something to decipher data 
    } 
}; 

實現類需要一個空指針,作爲輸入參數。

我想要做的僅僅是傳遞一個Python字符串(二進制字符串在Python 2.x的)作爲參數:

data = "I'm a stirng data!" 
impl = Impl(data) 

但痛飲生成模塊引發此

TypeError: in method 'new_Impl', argument 1 of type 'void *' 

我m新的swig,現在在SWIG文檔中搜索了一整天。 唯一能爲我工作的是swig文檔8.3 C字符串處理。但是我的函數並沒有真正採用大小整數。

我覺得我的問題很簡單,我必須錯過一些東西,請幫助。

謝謝!

回答

4

我自己找到了解決方案。

正如我只需要void *的指針作爲輸入:

%typemap(in) void* = char*; 

會做的伎倆。

Swig接受字符串類型的char *參數,並將void *當作指針。 所以使用char *輸入類型會沒事的。