我将Prolog连接到C#时遇到问题。
Visual Studio提供以下错误:
“类型'System.IO.FileNotFoundException'的未处理异常 发生在SwiPlCs.dll“
我真的不知道如何处理这个问题。
我认为它来自我在代码中提供的路径:
using System;
using SbsSW.SwiPlCs;
namespace ptest
{
class Program
{
static void Main(string[] args)
{
//Environment.SetEnvironmentVariable(@"C:\Program Files\swipl", @"C:\Program Files\swipl\boot64.prc"); // or boot64.prc
var curPath = Environment.GetEnvironmentVariable("C:\\Program Files\\swipl\\bin");
Environment.SetEnvironmentVariable(@"C:\Program Files\swipl\bin", @"C:\Program Files\swipl\boot;C:\Program Files\swipl;" + curPath);
if (!PlEngine.IsInitialized)
{
String[] param = { "-q" }; // suppressing informational and banner messages
PlEngine.Initialize(param);
PlQuery.PlCall("assert(father(martin, inka))");
PlQuery.PlCall("assert(father(uwe, gloria))");
PlQuery.PlCall("assert(father(uwe, melanie))");
PlQuery.PlCall("assert(father(uwe, ayala))");
using (var q = new PlQuery("father(P, C), atomic_list_concat([P,' is_father_of ',C], L)"))
{
foreach (PlQueryVariables v in q.SolutionVariables)
Console.WriteLine(v["L"].ToString());
Console.WriteLine("all children from uwe:");
q.Variables["P"].Unify("uwe");
foreach (PlQueryVariables v in q.SolutionVariables)
Console.WriteLine(v["C"].ToString());
}
PlEngine.PlCleanup();
Console.WriteLine("finshed!");
}
}
}
}
请帮帮我。非常感谢你。
答案 0 :(得分:0)
我认为最新版本的SWI_Prolog存在问题。尝试在C:/ Program Files(x86)中安装旧版SWI-Prolog 6.6.1 for Microsoft Windows (32 bit)并使用SwiPlCs_1.1.60301.0.zip。在Visual Studio中添加对SwiPlCs.dll的引用。它将工作IA:)