GCJを使用してPythonから呼び出すライブラリを作成することができますか?

StackOverflow https://stackoverflow.com/questions/2203728

  •  18-09-2019
  •  | 
  •  

質問

GCJを使用してJavaを対象としたライブラリをコンパイルし、DLLを取得してPython CTYPESから電話をかけることは可能ですか?

私は今のところトキシリブに興味がありますが、誰かがおもちゃの例を知っているなら、それは素晴らしいことです!

役に立ちましたか?

解決

Java-Pythonフックが必要な場合は、Jythonを使用して、そのように境界を越えて呼び出す方がはるかに良いでしょう。

ただし、はい、Javaから外部ライブラリを呼び出すことができます。しかし、それを行うためにGCJは必要ありません。むしろ、Pythonランタイム内にJVMインスタンスを表示して、そのためにメソッドを呼び出すだけです。

JNI Invocation Spec

基本的に、スタートアップでVMを作成してから、いつでもメソッドを呼び出します。

// Do this once per session, e.g. an __init__ 

JNI_CreateJavaVM(&jvm, &env, &vm_args); 

// When needed invoke Example.foo(int)
jclass cls =
env->FindClass("Example");  jmethodID
mid = env->GetStaticMethodID(cls,
"foo", "(I)V"); 
env->CallStaticVoidMethod(cls, mid,100);

CTYPESからこれを呼び出すために、いくつかの簡単なCラッパーコードを記述できます。ただし、Javavmは多くのボイド*ポインターを備えた構造の構造であるため、直接それを行うことは非自明かもしれません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top