2016-05-17 16 views
0

C++で書かれたプロトコルパーサとPythonで書かれたTCPパケットフィルタとの間のインタフェースを作成しようとしています。私はPythonでC++を使用することに慣れていません。そして、2人を数日間協力させようとしています。SWIG構造体のスコープを失う

私はswigライブラリを使用しています。解析クラス(私は書いていない)は、ヘッダファイルを通して他のC++ファイルへの多くの参照を含んでいます。 C++クラスはE2ProtocolHandler.cppと呼ばれ、E2ProtocolHandler.hと呼ばれるすべての依存関係を含むヘッダーファイルがあります。

私はこれを遵守するため、以下のガブガブ飲むインターフェイスを書いた:

%module e2ParserSwig 

%{ 
#include "E2ProtocolHandler.h" 
%} 

bool parseE2(std::vector<uint8_t> ui8BufferIn, TTCAPMessage_t &tcapMsg); 

これは私に何の問題も与えない実行:スコープの問題が発生した場所

swig -c++ -python -o e2Parser_wrap.cpp e2ParserSwig.i 

コンパイルは次のとおりです。

g++ -c -fPIC e2Parser_wrap.cpp -I/usr/include/python2.6 -I/usr/lib/python2.6 

エラー:

e2Parser_wrap.cpp:6607: error: ‘TTCAPComponent_t’ was not declared in this scope 

の構造はE2ProtocolHandler.h で定義されています。私が間違っていることを知っている人はいますか? ご協力いただきありがとうございます。

答えて

0

私はそれを純粋に幸運から考え出しました。私はCをかなりよく知っていますが、C++を使ったことはありません。それは "::"は私にとっては外国のコンセプトか、私にとっては外国のコンセプトだったと言われています。

問題を解決するために、関数の名前空間を含める必要がありました。私は完全性の目的のためにソースコードを投稿しなかったので、誰も私の質問からそれを導き出すことはできなかったと思います。

ガブガブ飲むインターフェイスがされている必要があります。

%module e2ParserSwig 

%{ 
#include "E2ProtocolHandler.h" 
%} 

bool E2ProtocolHandler::parseE2(std::vector<uint8_t> ui8BufferIn, TTCAPMessage_t &tcapMsg); 
関連する問題