如何在Mac OS X中将Windows DLL与Java一起使用?
我见过一些Java项目通过Windows中的JNI使用如何在Mac OS X中将Windows DLL与Java一起使用?,java,c,macos,dll,java-native-interface,Java,C,Macos,Dll,Java Native Interface,我见过一些Java项目通过Windows中的JNI使用taucs.dll,这是一个稀疏线性解算器的C库。我想我可以在MacOSX中通过将TAUCS编译成类似于libTaucs.jnilib的东西来实现同样的效果。我可以访问库的代码,但不知道如何将其编译成DLL,更不用说JNI库了。到目前为止,我只能编译到一个静态库 有没有办法将DLL转换为Mac的JNI库?如果我必须编译代码,如何编译?在动态库中包装静态库是否适用于JNI,特别是对于TAUC,如果有人有经验的话?许多操作系统都有共享库的概念,但
taucs.dll
,这是一个稀疏线性解算器的C库。我想我可以在MacOSX中通过将TAUCS编译成类似于libTaucs.jnilib
的东西来实现同样的效果。我可以访问库的代码,但不知道如何将其编译成DLL,更不用说JNI库了。到目前为止,我只能编译到一个静态库
有没有办法将DLL转换为Mac的JNI库?如果我必须编译代码,如何编译?在动态库中包装静态库是否适用于JNI,特别是对于TAUC,如果有人有经验的话?许多操作系统都有共享库的概念,但当然,在不同的操作系统上,这些库的格式等是不同的 DLL(动态链接库)是Windows版本的共享库。您不能仅在Mac OS上使用Windows计算机上的DLL,就像您不能在Mac OS(或任何其他操作系统)上运行Windows应用程序一样 您不需要尝试在Mac OS上使用Windows DLL,而需要查找您尝试使用的本机库的Mac OS特定版本。或者,如果您有源代码,请将其编译到Mac OS本机共享库中。Mac OS X上的共享库具有扩展名.so(而不是.dll),它代表“共享对象”。
仅使用Java加载它们是不可能的。最后,Microsoft发布了完全独立于平台的版本。使用.NET Core framework构建DLL时,可以使用以下命令运行该文件
dotnet yourapp.dll
此外,现在可以在Mac或Linux机器上使用轻量级IDE开发.NET应用程序,IDE已在集成的地方发布。谢谢您的回答。事实上,我知道这一点,但这样形成了这个问题,因为我暗暗希望有一个神奇的步骤可以做到这一点。顺便说一句,为了准确起见,葡萄酒将与加快我的繁重功能的想法背道而驰。说Java不可能做到这一点是不准确的。当然这是可能的,只是不容易,而且有现成的设施。原则上,我们所需要做的就是编写可以读取.dll文件和解析入口点的代码,然后使用JNA通过这些入口点调用它们。如果.dll调用WinAPI(许多/大多数都会调用),则会增加复杂性,而这正是Wine解决方案的用武之地。这是有可能的,但不容易,也不费力。而且为了准确起见,使用葡萄酒并不一定慢。设置和启动WINE需要时间,但取决于调用.dll函数的方式,执行它们可能很快。