1

ここに私のC ++コードがあります:

struct Impl
{
  DT* data_ptr_;

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

Impl クラスは、入力パラメーターとして void ポインターを取ります。

私がやりたいことは、Python 文字列 (Python 2.x のようなバイナリ文字列) をパラメーターとして渡すことです。

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

しかし、Swigが生成したモジュールはこれを発生させます

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

私は swig を初めて使用し、SWIG のドキュメントを 1 日中検索しました。私にとって唯一うまくいったのは、swig ドキュメント 8.3 C String Handling です。しかし、私の関数は実際にはサイズの整数を取りません。

私の問題はかなり単純だと思います。何かを見逃しているに違いありません。助けてください。

ありがとう!

4

1 に答える 1

4

私は自分で解決策を見つけました。

入力として void* ポインターのみが必要だったので:

%typemap(in) void* = char*;

トリックを行います。

Swig は char* パラメーターを文字列型として受け入れ、void* を単なるポインターとして受け取ります。char* 入力タイプを使用しても問題ありません。

于 2012-10-02T11:14:39.123 に答える