编译CLIPS集成源码时,CLIPS Solution中的CLIPSStatic失效

When compile the CLIPS integration source code,the CLIPSStatic in the CLIPS Solution is failed

我已经检查了来自网站的更新代码:http://sourceforge.net/projects/clipsrules/

当我构建 CLPSStactic 项目时,输出中显示错误 window:

..\clipscpplib.cpp(281):error C2664: 

"EnvAddRouterWithContext": cannot convert parameter 4 from "int (__cdecl *)(void *,const char *) to "int (__cdecl *)()""

备注:

  1. 我用的是VS2012版本
  2. 使用VS2012打开CLIPS.sln(在名为"Installer"的文件夹中) 更新到 vs2012 时出错(CLIPS.vdproj,CLIPSSource.vdproj)。但是CLIPS的源代码已经生成在文件夹../Source/CLIPS.
  3. CLIPSDynamic 和 CLIPSWrapper 可以正确编译。

我想知道为什么会出现这个错误,是和VS版本有关还是其他?如何解决?

谢谢!


@加里莱利 如果你有时间,请看看这个。谢谢!

这个问题我自己解决了。详情如下:

  1. 从文件夹 "core" 复制 "router.h" 和 "router.c" 文件 (http://sourceforge.net/p/clipsrules/code/HEAD/tree/) 到文件夹"microsoft_windows/Source/CLIPS",并删除文件夹“../CLIPS”中的两个原始文件。

  2. 不要将文件夹 "core" 中的所有文件复制到 "CLIPS"。它也不会使 CLIPSStatic 项目构建成功。文件夹 "core" 的 "aggenda.h" 或 "aggenda.c" 似乎有问题。

  3. 我认为问题在于名为 "Installer" 的文件夹中的项目 CLIPS 生成的 "router.h" 和 "router.c" 不是最新版本。

如果你检查过来自同一个网站的代码,并且使用了相同版本的VS。你也可能会遇到这个问题。而这种方式可以帮助您解决问题。

你用错了projects/solutions。下载最新的提交 (r281)。 microsoft_windows 目录中您要使用的解决方案文件夹是 CLIPS_MVC_2010、CLIPS_MVC_2013、Examples_MVC_2010 和 Examples_MVC_2013。由于您使用的是 Visual Studio 2012,因此您可能希望使用 2010 目录。 Advanced Programming Guide 中的说明专门引用了这些目录。不要使用安装程序目录中的任何内容。您需要将 CLIPS 源代码文件从核心目录复制到 microsoft_windows/Source/CLIPS 目录,因为这些文件不会复制到存储库中。