可以使用 GCJ 生成可从 Python 调用的库吗?
是否可以使用 GCJ 编译一个用于 Java 的库,获取 dll 并从 python ctypes 调用?
我现在对 toxilibs 感兴趣,但如果有人知道一个玩具示例,那就太好了!
Is it possible to compile a library intended for Java with GCJ, get a dll and call from python ctypes?
I'm interested in toxilibs for now, but if anybody knows a toy example that would be great !
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您想要 Java-Python 挂钩,那么最好使用 Jython,然后以这种方式跨边界调用。
但是,是的,可以从 Java 调用外部库;但你不需要 GCJ 来做到这一点。相反,您可以在 Python 运行时中启动一个 JVM 实例,然后为此调用您的方法。
基本上
,你想要在启动时创建 VM,然后在需要时调用您的方法:
您可以编写一些简单的 C 包装器代码来从 ctypes 中调用它。然而,JavaVM 是一个具有许多 void* 指针的结构的结构,因此直接执行它可能并不简单。
If you want Java-Python hooks, you'd be far better off using Jython and then calling across the boundary that way.
However, yes, it's possible to call an external library from Java; but you don't need GCJ to do that. Rather, you can just bring up a JVM instance inside your Python runtime and then invoke your method(s) for that.
JNI invocation spec
Basically, you want to create your VM at startup, then invoke your method(s) whenever you want:
You could write some simple C-wrapper code to invoke this for you from ctypes. However, the JavaVM is a structure of a structure with a number of void* pointers, so might ne non-trivial to do it directly.