4

私はプロローグとC#をインターフェースしようとしています私はこのリンクを使用しました: ここにリンクの説明を入力してください

プロジェクトへの参照として SwiPlCs.dll を追加してから、ドキュメントの最初のコードを使用します

using System;
using SbsSW.SwiPlCs;


namespace HelloWorldDemo

{

class Program
{
    static void Main(string[] args)
    {
        //Environment.SetEnvironmentVariable("SWI_HOME_DIR", @"the_PATH_to_boot32.prc");
        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 (PlQuery 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 child's from uwe:");
                q.Variables["P"].Unify("uwe");
                foreach (PlQueryVariables v in q.SolutionVariables)
                    Console.WriteLine(v["C"].ToString());
            }
            PlEngine.PlCleanup();
            Console.WriteLine("finshed!");
        }
    }
}

}

しかし、例外は常に発生します..次のように言います:

指定されたモジュールが見つかりませんでした。(HRESULT からの例外: 0x8007007E

SWI-prolog では、このエラーについて次のように述べています。

libswipl.dll またはその依存関係の 1 つが見つからない場合、System.IO.FileNotFoundException: Das angegebene Modul wurde nicht gefunden のようなエラーが表示されます。(Ausnahme von HRESULT: 0x8007007E)

libswipl.dll をプログラム ビンからプロジェクトの bin/debug フォルダーにコピーしましたが、それでも同じ問題が発生します。

私がしなければならないこと ??ありがとう

4

2 に答える 2

3

SWI_HOME_DIR を宣言しましたか? c`\Program Files\pl を指す必要があります

C# とのインターフェイスは、Windows 7 64 ビット、Visual Studio 2010 プロフェッショナルでは機能しません。バグのようです。Uwe Lesta はすぐにバグを修正する必要があります。

于 2012-11-26T08:13:31.180 に答える