Question

Est-il possible de compiler une bibliothèque destinée à Java avec GCJ, obtenir un dll et appeler à partir ctypes python?

Je suis intéressé par toxilibs pour l'instant, mais si quelqu'un sait un exemple de jouet qui serait génial!

Était-ce utile?

La solution

Si vous voulez des crochets Java-Python, vous seriez bien mieux en utilisant Jython, puis d'appeler à travers la frontière de cette façon.

Cependant, oui, il est possible d'appeler une bibliothèque externe de Java; mais vous n'avez pas besoin GCJ de le faire. Au contraire, vous pouvez simplement mettre en place une instance de machine virtuelle Java dans votre exécution Python puis appelez votre méthode (s) pour cela.

JNI spécification d'invocation

En gros, vous voulez créer votre machine virtuelle au démarrage, puis appelez votre méthode (s) chaque fois que vous voulez:

// 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);

Vous pouvez écrire quelques simples code wrapper C pour appeler pour vous de ctypes. Cependant, la JavaVM est une structure d'une structure avec un certain nombre de pointeurs vides *, donc peut-nè non trivial de le faire directement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top