Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Linux下从Java访问Windows dll(可能通过Wine)_Java_Linux_Java Native Interface_Wine_Winelib - Fatal编程技术网

在Linux下从Java访问Windows dll(可能通过Wine)

在Linux下从Java访问Windows dll(可能通过Wine),java,linux,java-native-interface,wine,winelib,Java,Linux,Java Native Interface,Wine,Winelib,我已经通过以下方法在Linux下运行了JavaFX2.0。通过使用Wine运行Windows版本的Java,它可以很好地工作。此Java进程可以获取Windows版本JavaFX的本机.dll文件 现在,我想知道是否有一种不同的解决方案运行Linux版本的Java,但通过Wine访问.dll文件 以图形方式总结: 有效:Wine->Java(win)->DLL(win) 我要问的是:Java(linux)->Wine->DLL(win) 我为什么要这么做 我希望让应用程序像其他Java应用程

我已经通过以下方法在Linux下运行了JavaFX2.0。通过使用Wine运行Windows版本的Java,它可以很好地工作。此Java进程可以获取Windows版本JavaFX的本机.dll文件

现在,我想知道是否有一种不同的解决方案运行Linux版本的Java,但通过Wine访问.dll文件

以图形方式总结:

  • 有效:Wine->Java(win)->DLL(win)
  • 我要问的是:Java(linux)->Wine->DLL(win)
我为什么要这么做
我希望让应用程序像其他Java应用程序一样启动,只需要安装Wine。已经开始工作的解决方案需要Wine安装和Windows版本的Java。

我怀疑Wine会使
.dll
看起来像
。因此
Wine通过创建模拟环境来工作,应用程序必须在该环境中运行才能工作

你应该能做的是

Java(linux) -- socket --> Java(Wine) -- loads --> DLL(win)

这仍然需要Windows版本的Java。但这是一个好主意。您可以减少两个版本之间的重复。即使DLL必须在运行windows的虚拟机或另一个运行windows的框中运行,这种方法也可以工作。这意味着您的主JVM可以使用32位DLL实现64位。在我的例子中,.DLL将生成GUI内容并使用GPU。因此,它应该在运行应用程序的机器上执行。关于你的第一条评论:你知道我在哪里可以读到如何剥离Windows JRE以与Wine和Linux JRE一起使用吗?我正在考虑查找相同的文件,并使用符号链接或硬链接。有用于查找重复文件的工具。e、 g.许多罐子应该是相同的,或者可以做成相同的。