2013-03-01 17 views
1

例如,我有Swig [C-> Python]:如何處理原始類型的輸入或輸出函數參數?

my_types.h

typedef uint16_t my_type_1; 
typedef uint8_t my_type_2; 

my_types.c

int my_func(my_type_1 * arg1, my_type_2 * arg2, my_type_3 *arg3) 
{ 
    *args3 = *arg1 + *arg2; 
    return 0; 
} 

如何定義的接口文件有這個包裹蟒蛇?

+0

您的問題幾個錯別字 - 日ere不是'my_type_3' typedef,你在'my_func'的定義中有args3而不是arg3。 – Flexo 2013-03-24 08:50:44

回答

0

假設你沒有my_func在my_types.h的聲明,以及隨後的界面可以成爲:

%module test 

%{ 
#include "my_types.h" 
%} 

%include <stdint.i> 

%include "my_types.h" 

%apply uint16_t *INPUT { my_type_1 * arg1 }; 
%apply uint8_t *INPUT { my_type_2 * arg2 }; 
%apply uint16_t *OUTPUT { my_type_1 *arg3 }; 

int my_func(my_type_1 * arg1, my_type_2 * arg2, my_type_1 *arg3); 

這是足以讓你按如下方式使用它:

import test 

print test.my_func(100, 50)[1] 

你的「真實」的回報是在數組中的位置0,第一輸出的位置是1

相關問題