【问题标题】:How to use JPL (the java prolog interface of swi-prolog) with Eclipse?如何在 Eclipse 中使用 JPL(swi-prolog 的 java prolog 接口)?
【发布时间】:2015-07-19 06:25:38
【问题描述】:

我下载了 swi-prolog 7.2.2。

我将 jpl.dll 文件(在 swipl/bin 下)复制到了 system32。

我在 Eclipse 中创建了一个新项目,并将 jpl.jar 放在路径中(就像任何其他 jar 文件一样)。

然后,当我尝试启动此代码时:

package main_package;

import org.jpl7.Query;

public class Main {

    public static void main(String[] args) {

        String s = "consult('lib\rules.pl')";
        Query q = new Query(s); //the exception is thrown here
        System.out.println(q.hasSolution());

    }

}

我得到:

线程“main”java.lang.UnsatisfiedLinkError 中的异常:C:\Windows\System32\jpl.dll:无法在 AMD 64 位平台上加载 IA 32 位 .dll

我在网上读到,也许我应该将 java vm 更改为他的 32 位版本。我尝试通过转到 Window->Preferences->Java->Installed JREs 并将 vm 更改为 program x86 文件夹下的那个,但它没有帮助。

有什么想法吗?

【问题讨论】:

    标签: java prolog ffi swi-prolog


    【解决方案1】:

    安装 64 位版本的 SWI-Prolog (http://www.swi-prolog.org/download/stable) 并将新目录添加到路径中。

    【讨论】:

      【解决方案2】:

      虽然目录名

      C:\Windows\System32
      

      让我们相信它包含 32 位版本的 DLL 和程序,但事实并非如此。事实上,在 64 位 Windows 系统上,它包含 64 位版本。由于兼容性原因,目录名称未更改。

      如果在 64 位 Windows 系统上启动 32 位程序,操作系统会映射目录

      C:\Windows\SysWOW64
      

      成为System32 目录。所以你必须将你的 32 位 DLL 放到 SysWOW64 目录中。

      总结:

      1. System32 目录包含文件的 64 位版本。
      2. SysWOW64 目录包含文件的 32 位版本。

      旁注:

      目录名称SysWOW64 中的“WOW”部分表示“Windows on Windows”。

      链接:

      Wikipedia article about WOW64

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-02-27
        • 2012-04-02
        • 1970-01-01
        • 2010-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多