1

请帮我把细节放在一起。我已经扫描了互联网很多小时,但结果并不好。

所以我有:

  1. Delphi 为 JNI 编写的 DLL(来自 32 位 Delphi 上的 32 位 comp)

  2. 我的 64 位 MAC 上的 Java Web 项目(Tomcat、Spring)

  3. System.out.println(System.getProperty("java.library.path")) 写“/tmp” 是对的

  4. 在 /tmp 我有来自 delphi 的 qvs.dll

当我开始项目时,我得到了异常:

java.lang.UnsatisfiedLinkError: no qvs in java.library.path
  1. 加载库的 Java 代码:

    System.loadLibrary("qvs")

我尝试了许多具有相同结果的组合。只有一个原因我不能尝试。我可以在我的 64 位 MAC 上使用 32 位 DLL 吗?

非常感谢。

4

2 回答 2

6

不可能如你所愿,原因有二:

  • 您不能在 Mac (.dylib) 上运行 Windows 库(.dll 文件);
  • 您不能从 64 位进程启动 32 位库。

因此,我看到了三个解决方案:

  • 在 Windows 端制作所有内容(无论如何,如何将 Mac 用作服务器?);
  • 使用 Mac OS 版本的 Delphi XE2 编译器(或 FPC 编译器)以对象 pascal 代码(使用套接字)创建一个小型服务器应用程序,然后从 64 位 Java 进程以进程外方式访问它。不是一件容易的事——这个库不是免费的,但可以帮助你
  • 或者,当然,用 Java 或它的字节码重写代码:也许Oxygene for JavaFPC JVM 后端可以帮助你。
于 2012-07-09T06:37:23.933 回答
3

Windows DLL 不能在 Mac OS 系统上使用(Windows 虚拟机除外)。

于 2012-07-09T06:34:29.673 回答