上个月突然看到Prolog这门语言,它特殊的语法吸引了我,但是经过我一段时间的学习,发现它也不像网络上传说的那样神奇,不过我依然对它很感兴趣,有前辈说Prolog本身并不强大,但是用来作为一门辅助语言解决一些特殊的问题还是很有效的,碰巧我是干C#的,就查了查怎样把Prolog跟C#结合起来,但是我百度出来的资料实在只能用稀少来形容。没办法只能Google了,话说老D的hosts文件挺好用的。

  好在作为一名高级码农我也会一点English,思考了半天终于把how to use Prolog 这几个单词打出来了,然后神奇的Google帮我给了几个选项

让我不禁感叹,科技改变世界,代码改变世界。

  虽然我英文书写能力不强,但是阅读能力还是可以的,找了几篇帖子终于找到了几种解决方案,比如P#,SWI-Prolog等等。。

  经过几番对比,最终我选了SWI,http://www.swi-prolog.org/ 这是它的官网,里面有算是比较全面的帮助文档等等,然后又是一番折腾之后确定了需要的两个文件,一个SWI-Prolog的安装程序,还有一个DLL文件,这两个文件都分为32位跟64位两种,首先安装SWI,然后创建一个控制台程序,引用SwiPlCs.dll。

  好了,准备工作做完了,接下来就开始编码了,我参照官方给的例子写了一段code,然后怀着激动的心情按下ctrl+f5 然而结果跟我想象中的并不一样,like this

这是shenmegui?怎么跟说好的不一样?我急忙上google查资料,果然,国外大神也有碰到这个问题的,官网也有关于这个错误的说明,机智的我依靠扎实的英语基础加上浏览器的网页翻译功能终于理解了一大半,大概意思就是没有配置环境变量,大概跟java是一个道理,于是我添加了SWI_HOME_DIR这个环境变量,然后继续运行,当然,并没有什么卵用,依然是上面的错误,接下来我试了数十种方法,换成32位的dll,装一个win7的虚拟机加vs2010,装xp的虚拟机加vs2010,各种方法都试了,结果依然是这样,折腾了几天我几乎放弃了。

  碰巧今天晚上无聊,又google了一下关于这个的问题,突然在官网看到这个文档http://www.swi-prolog.org/pack/file_details/swicli/doc/introduction-SbsSW.htm

里面说把bin目录添加到PATH环境变量,我抱着试一试的心态在代码中加上这一句 

Environment.SetEnvironmentVariable("PATH", @"C:\Program Files\swipl\bin");

然后ctrl+f5,然后这个文章就结束了,妈的真的可以,折腾了这么久就是因为这个原因

SWI-Prolog的更多相关文章

  1. swi prolog 与c#

    最近,玩了一下prolog语言,感觉还是很有意思.由于我是学c#的,所以就不禁想看看c#如何与prolog进行结合,在网上找了一下,发现有个swi prolog对c#的dll,下载官网:http:// ...

  2. (原)在ubuntu 中安装 swi prolog 和 简单的使用

    参考网址:http://www0.cs.ucl.ac.uk/staff/mahmed/teaching/intro.html 参考网址:http://www.swi-prolog.org/build/ ...

  3. 七种Prolog解释器/编译器

    http://blog.sina.com.cn/s/blog_494e45fe0100lh1v.html PROLOG 人工智能领域常用的语言,开发自然语言分析,专家系统,以及所有和智能有关的程序,都 ...

  4. eclipse 使用prolog编程

    第一步:在电脑上安装swi-prolog 相应环境下载地址http://www.swi-prolog.org/download/stable 第二步: eclipse-help-install new ...

  5. 人工智能技术导论——逻辑程序设计语言PROLOG

    最近在复习人工智能导论,里面介绍了一种逻辑关系语言PROLOG,但这本书里面用到的编译器是Turbo PROLOG,这个编译器早就被淘汰了,我后来找的了它的升级版Visual PROLOG,但一些语法 ...

  6. how to use Prolog in C#? SWI-Prolog

    上个月突然看到Prolog这门语言,它特殊的语法吸引了我,但是经过我一段时间的学习,发现它也不像网络上传说的那样神奇,不过我依然对它很感兴趣,有前辈说Prolog本身并不强大,但是用来作为一门辅助语言 ...

  7. DOM解析XML报错:Content is not allowed in prolog

    报错内容为: Content is not allowed in prolog. Nested exception: Content is not allowed in prolog. 网上所述总结来 ...

  8. Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)

    org.apache.jasper.JasperException:xxx.jsp(1,1) Page-encoding specified in XML prolog (UTF-8) is diff ...

  9. prolog 阶段总结

    http://blog.csdn.net/mwsong/article/details/1766382   到现在为止,我们已经对Prolog有了一个基本的了解,现在有必要对我们所学过的知识做一个系统 ...

  10. prolog 规则

    规则 规则由几个互相依赖的简单句(谓词)组成.用来描述事实之间的依赖关系,如:因果关系,蕴含关系,对应关系 规则的实质就是存储起来得查询 其语法结构如下: head:-body head 为谓词的定义 ...

随机推荐

  1. WPF对于xml的简单操作(上)

    private void button1_Click(object sender, RoutedEventArgs e) { XmlTextWriter writer = new XmlTextWri ...

  2. Java实现BASE64编解码器

    Java实现BASE64编解码器 笔者:chszs,转载注明.博客首页:http://blog.csdn.net/chszs BASE64和其它类似的编码算法通经常使用于转换二进制数据为文本数据,其目 ...

  3. MVC模型与FishiGUI应用层MVC型号

    MVC概要: MVC (Modal View Controler)M是指数据模型,V是指用户界面,C则是控制器. 使用MVC的目的是将M和V的实现代码分离,从而使同一个程序能够使用不同的表现形式.比方 ...

  4. Mac下改动Android Studio 所用的JDK版本号

    Mac下改动Android Studio 所用的JDK版本号 @author ASCE1885 近期项目从Eclipse+Ant构建模式转移到了Android Studio+Gradle构建模式.自然 ...

  5. C++ 版本的split_string

    vector<string> split_string(const string &in, char del, bool skip_empty) { vector<strin ...

  6. PV操作——生产者和消费者

    首先,先来看几个概念: 同步:协作的过程,比如,多人开发合作. 相互排斥:争抢资源的过程.比如苦逼的大学选课: 临界区:进程中对临界资源实施操作的那段程序: 临界资源:一次仅仅能一个进程使用的资源,比 ...

  7. iOS结合导航控制器和标签栏控制器

    <span style="font-family: Arial, Helvetica, sans-serif;"></span><pre name=& ...

  8. 认识Backbone (五)

    Backbone.Router(路由)/ Backbone.history(历史)  Backbone.Router 为客户端路由提供了许多方法,并能连接到指定的动作(actions)和事件(even ...

  9. 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern)

    原文:乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 适配器模式(Adapter Pattern) 作者:webabc ...

  10. unity3d脚本

    一 创建和使用脚本 1 概述 GameObject的行为都是被附加到其上面的组件控制,脚本本质上也是一个组件. 在unity中创建一个脚本.默认内容例如以下: using UnityEngine; u ...