staticなオブジェクトをSWIG, JNIでreturnするにはどうすればよいでしょうか
以下のコードをSWIG3を使用してclass Foo を Javaで使用できるようにしたいとしています。
元のC++コードは以下のようになっています。
C++側のコードは変更することはできないとします。
class Foo {
public:
static Foo* getFoo(return &_Foo;}
/* some method */
};
static Foo _Foo;
これをJavaで
Foo _foo = Foo.getFoo();
とします。
SWIG3はそのまま_Fooをreturnするコードを出力しますが、
にしてもclass FooはJavaのObjectから継承されていないので
Exceptionになります。
java.lang.Error: Unresolved compilation problems:
The type java.lang.Object cannot be resolved.
ではSWIGにたよらず自力でJNIを作成するとしても
すでにstaticなオブジェクトがあるわけですから、JNIEnv::NewObject()で新規オブジェクトを
つくることもできません。
staticですからガーベジコレクション時の挙動も謎です。
どのようにしてstaticオブジェクトを返せば良いのでしょうか?
やはり、不可能なのでしょうか。