c# - 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 天,没有任何进展。
解决方案
该错误不是很清楚,但由于程序需要知道在哪里可以找到运行 SWI-Prolog 的 DLL 所在的位置。有几种方法可以做到这一点,但最简单的是将C:\Program Files\swipl\bin
包含 SWI-Prolog 可执行文件 ( swipl-win.exe
) 的目录 (例如 ) 添加到 Windows 系统PATH
变量中。
更改系统 PATH 变量后,如有必要,您需要重新启动 Visual Studio。
推荐阅读
- android - 由于 Android NDK 支持上的 StackOverflowError,如何修复 Android Studio 中的持续冻结?
- events - 多种 NetSuite 脚本事件类型
- python - 自定义 OrderedDict 格式并转入字典
- spring - 如何通过 Spring 占位符在 yaml 中表达对象列表或数组?
- python - 减少python中嵌套循环的执行时间
- objective-c - 如何检测 MTKView 中鼠标按下事件发生的位置?
- python - 脚本错误:ValueError:解包的值太多
- symfony - 部署我的 symfony 项目并收到 502 错误
- python-3.x - 在某些请求后获取python 3中新生成的URL?
- javascript - photos.google.com/activities/photo_likes - 在 javascript 中调用