我在一个 DLL 文件中有一个带有 native 函数 (JNA) 的简单 API,它只计算一些数学内容。 我在 JAVA 应用程序中使用此 DLL,在 Windows JVM 上一切正常。
问题是这个库将在 Linux JVM 内的 Linux 环境中使用,并且不会有 *.so 版本。
我读过几次,有一种方法可以在内存中加载带有 wine 的 DLL 并从那里使用它,但没有解释如何操作。
有人可以为我确认或反驳这种方法吗?如果这确实是一个可能的解决方案,请告诉我该怎么做,好吗?
编辑:可能是 How to call Wine dll from python on Linux? 中描述的解决方案我能以某种方式使用 ctypes 吗?
问候 乌尔米
最佳答案
我认为你应该可以做到这一点,但我找不到分步指南,而且我自己也没有做过。尝试执行以下操作:
- 使用
winelib
创建一个调用 DLL 中的 native 函数的 linux C 应用程序 - 一旦它在 C 中工作,从该 C 代码中导出一个函数,该函数委托(delegate)给 DLL 并将其编译为
so
(一个 linux DLL) - 在 linux 上从 JNA 调用你的 C
so
祝你好运!
希望以前做过这件事的人能在这里提供更详细的答案。如果没有,请务必发布如何做的答案,以便其他人可以受益:-)
(answer you linked to 指的是 Windows 提供的 DLL,Wine 附带了这些的编译版本。)
关于java - 如何在 Linux JVM 中使用 native Windows DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33097020/