可以使用GCJ从Python中产生库调用?
题
是否可以编译针对Java与GCJ库,得到一个dll和蟒蛇的ctypes调用?
我感兴趣的toxilibs现在,但如果任何人知道的玩具例子,这将是伟大的!
解决方案
如果您想Java的Python的钩子,你会好得多使用的Jython,然后调用跨越边界的方式。
然而,是的,有可能从Java调用外部库;但你不需要GCJ做到这一点。相反,你可以打开一个JVM实例您的Python运行时内,然后调用你的这个方法(S)。
基本上,你想在启动时创建的虚拟机,然后调用你的方法(S),只要你想:
// 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);
您可以写一些简单的C-包装代码从ctypes的调用这个给你。然而,在JavaVM是与一些void *指针的结构的结构,所以可能甲肾上腺素非平凡直接做到这一点。
不隶属于 StackOverflow