2015-07-19 145 views
1

我已下载swi-prolog 7.2.2。如何在Eclipse中使用JPL(swi-prolog的java prolog接口)?

我将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位平台

我在线阅读,也许我应该在Java虚拟机改变他的32位版本的.dll文件加载IA 32位。我尝试了Window-> Preferences-> Java-> Installed JRE并将vm更改为程序x86文件夹下的那个,但它没有帮助。

任何想法?

回答

0

虽然目录名称

C:\Windows\System32 

使我们相信它包含DLL和程序的32位版本,它没有。实际上,在64位Windows系统中,它包含64位版本。由于兼容性原因,目录名称未更改。

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

C:\Windows\SysWOW64 

System32目录。所以你必须将你的32位DLL放入SysWOW64目录。

摘要:

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

旁注:

“哇” 的目录名称SysWOW64的意思是 “Windows在Windows” 的一部分。

链接:

Wikipedia article about WOW64