SwiPICs.dll PlEngine.Initialize FileNotFoundException - PullRequest
0 голосов
/ 21 декабря 2018

В образовательных целях один из предметов нашего колледжа требует проекта, который объединяет любой экземпляр Prolog с любым другим языком поддержки GUI.Я пошел с C #, так как у меня больше всего опыта с ним.Я пытаюсь учиться на примере коллег по колледжу с более высоких лет.Они дали мне свои репозитории, чтобы загрузить их код и посмотреть, как все это получается.И здесь начались проблемы.

Независимо от того, что я делаю, какой учебник я придерживаюсь, какие советы из других источников я применяю, ошибка не изменится: FileNotFoundException не обрабатывалось: в SwiPlCs возникло необработанное исключение типа 'System.IO.FileNotFoundException'.dll.

Я пытался использовать SWI 32 бит / 64 бит, VS 2015/2017 с 32/64 бит сборками, перезагружая DLL как пакет nuget.Ни один из них, кажется, не работает.

        InitializeComponent();
        igra.popuniSlagalicu += igra_popuniSlagalicu;
        igra.vratiOdgovor += igra_vratiOdgovor;
        String[] param = { "-q" };
        PlEngine.Initialize(param);
        PlQuery.PlCall("use_module(sudoku)");

Впервые я чувствовал себя беспомощным и отчаянным, пытаясь отладить код.Буквально застрял на одной линии на 5 дней без какого-либо прогресса.

1 Ответ

0 голосов
/ 21 декабря 2018

Ошибка не очень понятна, но вызвана тем, что программе необходимо знать, где находятся библиотеки DLL, которые запускают SWI-Prolog.Есть несколько способов сделать это, но самый простой - добавить каталог (например, C:\Program Files\swipl\bin), содержащий исполняемый файл SWI-Prolog (swipl-win.exe), в системную переменную Windows PATH.

После изменениясистемная переменная PATH, при необходимости вам потребуется перезапустить Visual Studio.

...