【问题标题】:Interfacing Microsoft .NET ( C# / F# ) with SWI-Prolog将 Microsoft .NET ( C# / F# ) 与 SWI-Prolog 连接
【发布时间】:2017-07-24 19:11:13
【问题描述】:

我在将 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!");
            }
        }
    }
}

请帮助我。非常感谢。

【问题讨论】:

标签: c# visual-studio prolog ffi swi-prolog


【解决方案1】:

我认为这是最新版本的 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 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多