2011-12-09 17 views
1

SWIGの名前を変更して、自動生成されたプロキシJavaクラスtest_cache_t.javaの名前をExample.javaに変更しようとしています。私は以下のように試してみました。それはthis questionとしてCの構造体でうまく動作しますが、Cの列挙型では機能しません。何か案は?私はあなたがここでは2つの問題がある名前の変更方法Cの列挙型から作成されたSWIG生成プロキシJavaクラス

%module Example 

%rename (Example) test_cache_t_; 
typedef enum test_cache_t_ { 
    CACHE_FALSE = 0, 
    CACHE_TRUE = 1 
} test_cache_t; 

%{ 
    #include "Example.h" 
%} 
%include "Example.h" 
[exec] /test/include/Example.h:84: Warning 302: Identifier 'test_cache_t' redefined (ignored) (Renamed from 'test_cache_t_'), 
[exec] test.i:7: Warning 302: previous definition of 'test_cache_t' (Renamed from 'test_cache_t_'). 
[exec] /test/include/Example.h:82: Warning 302: Identifier 'CACHE_FALSE' redefined (ignored), 
[exec] test.i:5: Warning 302: previous definition of 'CACHE_FALSE'. 
[exec] /test/include/Example.h:84: Warning 302: Identifier 'CACHE_TRUE' redefined (ignored), 
[exec] test.i:7: Warning 302: previous definition of 'CACHE_TRUE'. 

答えて

1

...かなり問題に私をリードしていないいくつかの警告を取得しています私は思う:

  1. あなたのモジュールが同じ名前を持つあなたの( %rename d)型であるため、Example.javaになりたいことが2つあります。

    ソリューション:あなたは一度インターフェイスファイルに、一度ヘッダファイルで、同じenumのSWIG二つの定義を提供しているように見えます%rename

  2. からモジュールまたは新しい名前のどちらかの名前を変更します。

    ソリューション:おそらく代わり%include%ignoreを使用して、インターフェイスファイルからtypedef enum test_cache_t_を削除、または完全%includeをドロップします。

私の最後のインターフェイスファイルのように見える終わっテストする場合:

これが機能するために奇妙なことに
%module SomeOtherName 

%{ 
    #include "Example.h" 
%} 

%rename (Example) test_cache_t; 

%include "Example.h" 

私はないenum名、%renametypedef D」の名前を使用する必要がありました。私はそれが理由の逆であると思われるのはなぜか分かりませんstruct/class

+0

#2が私の問題でした。私は実際の名前の代わりに "Example"という名前を使用していました。 – c12

関連する問題