【问题标题】:C# and Prolog integrationC# 和 Prolog 集成
【发布时间】:2024-01-10 07:09:01
【问题描述】:
当用户在 Windows 8 应用程序中单击“Enter”按钮时,我想执行一个 prolog 文件。我可以执行单独的 prolog 文件还是需要在我的 C# 代码中间编写 prolog 代码。我正在使用 Visual Studio 2013 和 SWI prolog。
我想这样做是因为我正在开发一个应用程序,它将算术方程作为用户输入,使用 prolog 求解它并输出答案。
【问题讨论】:
标签:
c#
visual-studio-2013
windows-store-apps
ffi
swi-prolog
【解决方案1】:
我建议使用常规的 Windows 桌面环境而不是 Windows Store(我在问题标签中看到)。 Windows 商店应用程序有很多限制来防止人们创建恶意应用程序,这将阻止您启动 Prolog 应用程序。
但是使用桌面应用程序,您可以在其自己的进程中启动 Prolog 解释器,并重定向标准输入和标准输出流。然后,您可以通过输入流将内容发送到 Prolog 进程,并将 Prolog 进程的输出流中继到 C# WinForms 应用程序中的文本框。
MSDN 上的这个示例展示了如何重定向进程的标准输出流:
http://msdn.microsoft.com/en-us/library/system.diagnostics.process.standardoutput%28v=vs.110%29.aspx
并进行一些小的更改以满足您的需求:
Process myProcess = new Process();
ProcessStartInfo myProcessStartInfo = new ProcessStartInfo("prolog.exe", "arguments to the prolog process");
myProcessStartInfo.UseShellExecute = false;
myProcessStartInfo.RedirectStandardOutput = true;
myProcess.StartInfo = myProcessStartInfo;
myProcess.Start();
StreamReader myStreamReader = myProcess.StandardOutput;
// Read the standard output of the spawned process.
string myString = myStreamReader.ReadLine();
Console.WriteLine(myString);
您还可以创建 Prolog 代码的 DLL 版本,您可以将其加载到您的 C# 应用程序中,但这需要更多的工作,我怀疑是否有足够的好处来证明额外的工作是合理的。