小编Bud*_*nto的帖子

如何将SWI Prolog与Visual Studio 2012连接起来

我有一个程序在Visual Studio中连接SWI-Prolog.以前,我使用VS2010(XP),一切正常.然后我升级我的VS成为VS2012(Win7),现在我的代码有问题.

说到以下代码:

PlEngine.Initialize(param);
Run Code Online (Sandbox Code Playgroud)

它总是给我以下异常消息:

The specified module could not be found. (Exception from HRESULT: 0x8007007E)
Run Code Online (Sandbox Code Playgroud)

任何人都可以发现我犯了什么错误,或者如果可能的话,我需要做一些修改,因为升级过程?

有关我的代码的其他信息:

  • 我使用了最新的swiPLCs库(版本:1.1.60301.0)
  • 我上面代码中的'param'是:string [] param = {" - q"," - f",@"c:\ program files(x86)\ pl \"};
  • 我已将路径环境变量设置为:c:\ program files(x86)\ pl \和c:\ program files(x86)\ pl\bin
  • 我在我的代码中有这个设置:Environment.SetEnvironmentVariable("SWI_HOME_DIR",Global.g_prologLocation);
  • 我有参考:swiPLcs.dll
  • 我已经尝试使用SWIProlog 64位,但我仍然遇到同样的问题

任何帮助都非常感谢.

非常感谢

c# prolog swi-prolog interfacing

6
推荐指数
1
解决办法
3722
查看次数

如何使用VSPackage检测Visual Studio IDE是否正在关闭?

我正在编写一个VS包,我需要存储用户启动包的时间,以及用户关闭Visual Studio时的时间.

问题是,我不知道如何获得Visual Studio的结束事件.任何人都可以给我任何关于如何检测VS是否正在关闭的信息?

注意:当我从互联网上搜索时,我遇到了类似的问题:如何通过VSPackage取消ToolWindowPane或Visual Studio IDE关闭操作?,但是当我尝试它时,这个解决方案是在Package窗口关闭时检测并执行某些操作,并且无法检测Visual Studio何时关闭.

任何帮助都非常感谢.

谢谢

c# vspackage visual-studio-2012

4
推荐指数
1
解决办法
1506
查看次数

序言.如何检查两个数学表达式是否相同

我正在写一个prolog程序,它将检查两个数学表达式是否实际相同.例如,如果我的数学表达式目标是:(a + b)+ c,那么以下任何表达式都被认为是相同的:

(A + B)+ C

一个+(B + C)

(B + A)+ C

(C + A)+ B

一个+(C + B)

C +(A + B)

和其他组合

当然,我不期望检查可能答案的组合,因为表达式可能比这更复杂.

目前,这是我的方法:例如,如果我想检查a + b*c是否与另一个表达式(如c*b + a)相同,那么我将两个表达式递归地存储为二进制表达式,我应该创建一个像ValueOf这样的规则会给我第一个表达式和第二个表达式的"值".然后我只检查两个表达式的"值"是否相同,然后我可以说两个表达式都是相同的.问题是,因为表达式的内容不是数字,而是标识符,我不能使用prolog"is"关键字来获取值.

有什么建议吗?

非常感谢

% represent a + b * c
binExprID(binEx1).
hasLeftArg(binEx1, a).
hasRightArg(binEx1, binEx2).
hasOperator(binEx1, +).

binExprID(binEx2).
hasLeftArg(binEx2, b).
hasRightArg(binEx2, c).
hasOperator(binEx2, *).

% represent c * b + a
binExprID(binEx3).
hasLeftArg(binEx3, c).
hasRightArg(binEx3, b).
hasOperator(binEx3, *).

binExprID(binEx4).
hasLeftArg(binEx4, binEx3).
hasRightArg(binEx4, a).
hasOperator(binEx4, +).

goal:- valueOf(binEx1, V), …
Run Code Online (Sandbox Code Playgroud)

logic predicate prolog

3
推荐指数
1
解决办法
1042
查看次数

Roslyn:获取数组值

我尝试使用Roslyn获取数组值。例如,如果我有这样的C#代码:

int[] arrInt = {10, 20, 30, 40, 50};
Run Code Online (Sandbox Code Playgroud)

那么我如何获得arrInt [0]为10,arrInt [1]为20等信息。

c# arrays roslyn

2
推荐指数
1
解决办法
973
查看次数