是否可以编译针对Java与GCJ库,得到一个dll和蟒蛇的ctypes调用?

我感兴趣的toxilibs现在,但如果任何人知道的玩具例子,这将是伟大的!

有帮助吗?

解决方案

如果您想Java的Python的钩子,你会好得多使用的Jython,然后调用跨越边界的方式。

然而,是的,有可能从Java调用外部库;但你不需要GCJ做到这一点。相反,你可以打开一个JVM实例您的Python运行时内,然后调用你的这个方法(S)。

JNI调用规范

基本上,你想在启动时创建的虚拟机,然后调用你的方法(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 *指针的结构的结构,所以可能甲肾上腺素非平凡直接做到这一点。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top