2015-09-18 117 views
2

的Prolog用c#使用视觉工作室13 但有与此异常的问题: 类型“System.IO.FileNotFoundException”的未处理的异常出现在mscorlib.dll的Prolog用c#视觉工作室13

附加信息: 指定的模块无法找到。 (异常来自HRESULT:0x8007007E)

using System; 
using SbsSW.SwiPlCs; 

    namespace ConsoleApplication35 
    { 
     class Program 
     { 
      static void Main(string[] args) 
      { 

       Environment.SetEnvironmentVariable(@"D:\Prolog\swipl", @"D:\Prolog\swipl\boot"); 
       if (!PlEngine.IsInitialized) 
       { 
        String[] param = { "-q" }; 
        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!"); 
       } 
      } 
     } 
    } 

回答

3

我想你的意思是设置PATH环境变量,你的代码需要改变如下:

var curPath = Environment.GetEnvironmentVariable("PATH"); 
Environment.SetEnvironmentVariable(@"PATH", @"D:\Prolog\swipl\boot;D:\Prolog\swipl;" + curPath); 
+0

那不覆盖的全部内容路径变量?对我来说,这似乎是一个坏主意。 – Derek

+0

我可能会尝试获取路径变量,看它是否包含我的文件夹,如果它没有,那么我会用分号将它添加到末尾(分隔)。 – Derek

+0

@德里克是的,好主意 – thumbmunkeys