【问题标题】:How to use a native windows DLL inside a Linux JVM如何在 Linux JVM 中使用本机 Windows DLL
【发布时间】:2016-01-10 20:53:30
【问题描述】:

我在一个 DLL 文件中有一个带有本机函数 (JNA) 的简单 API,它只计算一些数学内容。 我在一个 JAVA 应用程序中使用这个 DLL,并且在 windows JVM 上一切正常。

问题是这个库将在 Linux JVM 内的 Linux 环境中使用,并且不会有 *.so 版本。

我读过几次,有一种方法可以在内存中加载带有 wine 的 DLL 并从那里使用它,但没有解释如何做到这一点。

有人可以为我确认或反驳这种方法吗?如果这真的是一个可能的解决方案,请告诉我该怎么做?

编辑:可能是How to call Wine dll from python on Linux? 中描述的解决方案我可以以某种方式使用 ctypes 吗?

问候 乌尔米

【问题讨论】:

  • (如果您有源代码,您可能会发现在 linux C 中重新编译数学内容或将其移植到 Java 会更容易。)

标签: java linux dll jvm wine


【解决方案1】:

我认为您应该能够做到这一点,但我找不到分步指南,而且我自己也没有做过。尝试执行以下操作:

祝你好运!

希望以前做过这件事的人会在这里提供更详细的答案。如果没有,请务必发布如何做作为答案,以便其他人可以受益:-)

answer you linked to 指的是 Windows 提供的 DLL,Wine 附带了这些的编译版本。)

【讨论】:

  • 感谢您的帮助。我会试试你的想法。这意味着我不需要对我的 java 应用程序进行太多更改。
  • 好吧,这个 wiki 无法解决我的问题。代码 sn-p 包括例如“windows.h”文件。这在 linux 环境中不可用。此外,使用 wineg++ 进行编译会引发很多不容易通过谷歌搜索的错误。例如。 “'.' 标记 WINE_DEFAULT_DEBUG_CHANNEL(foo.bar) 之前的预期初始化程序”
  • "代码 sn-p 包括例如 "windows.h" 文件。这在 linux 环境中不可用。" -- 我认为它包含在 linux 上的 WINE 中。
  • 也许可以尝试在winehq.org/mailman/listinfo/wine-users 上问这个问题?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-12
相关资源
最近更新 更多