الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

ربط C# مع Prolog

بدأه Albert1990 في 26 نوفمبر 2012 · 5 رد · 1,553 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

أنا أحاول ربط بين برنامج C# ولغة الذكاء الصنعي الـ prolog

استعنت بالرابط التالي :

الرابط الخاص بي

وقمت بقراءة الـ documentation الخاصة بها وحاولت تنفيذ الرنامج الأول :

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

طبعا أول شي قمت بتضمين الملف SwiPlCs.dll

ولكن هناك خطأ دائما يواجهني هو التالي :

The specified module could not be found. (Exception from HRESULT: 0x8007007E)

حاولت القراءة عنه في الموقع فوجدت قد كتب عنه التالي :

If libswipl.dll or one of its dependencies could not found you will recive an error like

System.IO.FileNotFoundException: Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E)

قمت بما قالو ونسخت الملف libswipl.dll إلى مجلد الـ debug الموجود داخل مجلد الـ bin الخاص بمشروعي ولكن أيضا دون فائدة

هل يستطيع أحد مساعدتي ؟

شكرا

#2

السلام عليكم ورحمة الله وبركاته

أخي الكريم ، جرب تسجيل المكتبة libswipl.dll عن طريق كتابة Regsvr32 + مسار المكتبة libswipl.dll في صندوق حوار Run من القائمة إبدأ.

إن لم ينجح معك الربط فهناك طريقة أخرى حيث قد قمت بتجريب ربط SWI-Prolog مع برنامجي عن طريق الإتصال بملف Console الخاص SWI-Prolog ، حيث أستطيع بعد ذلك تمرير المدخلات والحصول على المخرجات ، طريقة الإتصال تجدها على الرابط التالي :

/index.php?showtopic=269890&st=0&p=1309858&fromsearch=1entry1309858

ملف الـ Console الخاص SWI-Prolog تجدهه عل المسار التالي :

C:\Program Files\pl\bin\plcon.exe

ملاحظة:

طريقة الربط الخاصة بك والقاضية بتضمين المكتبة ضمن مشروعك أفضل من طريقة الربط الخاصة بي ولكنني طرحتها من أجل السرعة فيما إن لم يكن لديك وقت.

السلام عليكم ورحمة الله وبركاته

تم تعديل هذه المشاركة بواسطة DOWNLOADER في 27 نوفمبر 2012 في 10:40

1
#3

الله يسلم دياتك يارب

بس أنا عم حاول أكتب جوات الـ Run مايلي

Regsvr32 C:/Program Files/swipl/bin

بس ما عم يمشي الحال

جربت

Regsvr32+C:/Program Files/swipl/bin

كمان مافي أمل :)

وشكرا

#4

كتبت الأمر التالي في الـ Run :

Regsvr32 /i "C:\Program Files\swipl\bin\libswipl.dll"

فأظهر لي رسالة خطأ كالتالي :

اقتباس
The module "C:\Program Files\swipl\bin\libswipl.dll" was loaded but the entry-point DllRegisterServer was not found.

Make sure that "C:\Program Files\swipl\bin\libswipl.dll" is a vaild DLL or OSX file and then try again

وكأن ملف المجمعة هذا فيه مشكلة ما

الحقيقة عندما حاولت إضافة Reference عن طريق مشروع الـ C# كمان طلعلي رسالة كان معناها أنو : تأكد من أن الملف هو ملف dll صالح وأنه COM

#5

السلام عليكم ورحمة الله وبركاته

أخي الكريم ، بحثت على الإنترنت عن حل : http://www.google.com/#hl=en&tbo=d&sclient=psy-ab&q=The+module+was+loaded+but+the+entry-point+DllRegisterServer+was+not+found&oq=The+module+was+loaded+but+the+entry-point+DllRegisterServer+was+not+found&gs_l=hp.3..0l4.10805.11870.1.13547.8.5.0.0.0.0.385.739.3-2.2.0.les%3Beqn%2Cfixedpos%3Dfalse%2Cboost_normal%3D40%2Cboost_high%3D40%2Ccconf%3D1-2%2Cmin_length%3D2%2Crate_low%3D0-035%2Crate_high%3D0-035%2Csecond_pass%3Dfalse%2Cignore_bad_origquery%3Dtrue%2Conetoken%3Dfalse..0.3...1c.1.8PeO12X70H0&pbx=1&bav=on.2,or.r_gc.r_pw.r_qf.&fp=ceb5c5486dd0dc76&bpcl=38897761&biw=1024&bih=561

فوجد حل يقول أنه يتوجب عليك وضع ملف الـ Dll ضمن المسارات البيئية لنظام التشغيل مثل System32 أو أن يكون مسار ملف الـ Dll من المتغيرات البيئية: http://social.msdn.microsoft.com/Forums/en/vclanguage/thread/11fc53c4-f927-46bf-8c1d-2b883fba3d55

السلام عليكم ورحمة الله وبركاته

تم تعديل هذه المشاركة بواسطة DOWNLOADER في 29 نوفمبر 2012 في 12:48

#6

للأسف أخي مافي أمل عم يضل يطلع هداك الـ Exception يلي حكيتلك عنو

مواضيع مشابهة