首页 > 解决方案 > SwiPICs.dll PlEngine.Initialize FileNotFoundException

问题描述

出于教育目的,我们的一门大学科目需要一个将 Prolog 的任何实例与任何其他 GUI 支持语言集成的项目。我选择了 C#,因为我对它最有经验。我试图以高年级的大学同事为榜样学习。他们给了我他们的存储库来下载他们的代码并看看它们是如何组合在一起的。这就是问题开始的地方。

无论我做什么,我遵循什么教程,我应用了来自其他来源的什么提示,错误都不会改变:FileNotFoundException 未处理:SwiPlCs.dll 中发生了“System.IO.FileNotFoundException”类型的未处理异常。

我尝试使用 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 天,没有任何进展。

标签: c#visual-studioprologswi-prolog

解决方案


该错误不是很清楚,但由于程序需要知道在哪里可以找到运行 SWI-Prolog 的 DLL 所在的位置。有几种方法可以做到这一点,但最简单的是将C:\Program Files\swipl\bin包含 SWI-Prolog 可执行文件 ( swipl-win.exe) 的目录 (例如 ) 添加到 Windows 系统PATH变量中。

更改系统 PATH 变量后,如有必要,您需要重新启动 Visual Studio。


推荐阅读