2016-07-18 29 views
1

新しいSWIGを使用してC共有ライブラリをラップします。ポインタ構造体を持つSWIG関数

私はPythonの構造体ポインタでC関数を呼び出すのに問題があります。

マイファイル:

ST_Param.h:ST_Param_Initialize以内

typedef struct { 
     unsigned int* device_Address; 
     .... 
     .... 
     unsigned int lock; 
}ST_param_ST;  


unsigned char ST_Param_Initialize(ST_param_ST * ST_param, unsigned int device_Address); 

ST_Param.c

......... Rest of file............. 

unsigned char ST_Param_Initialize(ST_param_ST * ST_param, unsigned int device_Address){ 

    if(ST_param == NULL){ 
    .......... rest of funtion ....................... 

    return 0; 
} 

を信じていない場合、私は、ポインタが存在することを確認し

ST_Param.i

/* File : ST_Param.i */ 
%module ST_Param 

%{ 
#define SWIG_FILE_WITH_INIT 
#include "ST_Param.h" 
%} 




%include "typemaps.i" 
%include "ST_Param.h" 

私はコンパイルとの.soファイル良いを生成しました。 Pythonで 私はライブラリをインポートすることができますが、私はST_Param_Initializeを呼び出す傾けるため必要ST_Param_ST *パラメータ:

ST_param_ST * error

私はこれをどのように行うことができますか?

注:.cと.hファイルは変更できません。 .iファイルのみ。

グーグルでの検索が、私はそれを

おかげ よろしくを行う方法を理解しません。

答えて

2

あなたがCでそれを行う。この本質的に同じ方法で操作を行います。あなたは最初ST_param_ST構造体を作成し、初期化関数ST_Param_Initialize()にこれを渡します。あなたのモジュールがexと呼ばれると仮定して、Pythonの例を示します。

関連する問題