带C#的Prolog。访问旋转错误

带C#的Prolog。访问旋转错误,c#,prolog,C#,Prolog,我不熟悉Prolog和C。当我尝试将Prolog与C集成时,我发现了一些错误。我遵循SWI Prolog网站上的说明并使用其示例代码。当我运行应用程序时,它会给出以下错误。有人可以指导我做什么??先谢谢你 错误: 消息:SwiPlCs.dll中发生“System.AccessViolationException”类型的未处理异常 代码如下: Environment.SetEnvironmentVariable("SWI_HOME_DIR", @"C:\Program Files (x86)\sw

我不熟悉Prolog和C。当我尝试将Prolog与C集成时,我发现了一些错误。我遵循SWI Prolog网站上的说明并使用其示例代码。当我运行应用程序时,它会给出以下错误。有人可以指导我做什么??先谢谢你

错误: 消息:SwiPlCs.dll中发生“System.AccessViolationException”类型的未处理异常

代码如下:

Environment.SetEnvironmentVariable("SWI_HOME_DIR", @"C:\Program Files (x86)\swipl\");
            Environment.SetEnvironmentVariable("PATH", @"C:\Program Files (x86)\swipl\");
            Environment.SetEnvironmentVariable("PATH", @"C:\Program Files (x86)\swipl\bin\");

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

您使用32位版本的SWI Prolog,因此不能使用x64进行编译,只能使用x86或“任何CPU”。是吗?是的,我用的是32位版本。在调试期间,它在使用语句时遇到麻烦。