编译完了 https://blog.csdn.net/ljt350740378/article/details/95072188 后,我们来编译 bnfparser2-0.2.0。
bnfparser2-0.2.0 官网: https://sourceforge.net/projects/bnfparser2/
后来发现 bnfparser2-0.2.0 依赖 pcre,于是去下载,刚开始下载的是pcre2-10.33,网上也有相应的VS2013的版本,结果一直报链接错误,报链接错误,一般指的是没有实现,于是,查找各种原因,查看源码等,发现bnfparser2-0.2.0使用的是pcre-8.43-1(因为bnfparser2依赖的头文件,只有pcre-8.43版本才有H+CPP的实现,不然报链接错误),于是又下载pcre-8.43,从ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/ 地址下载。
1.编译 pcre-8.43
解压安装包,然后用NON-AUTOTOOLS-BUILD的说法,用cmake来编译。然后把下面图的文件COPY下来。这些文件是我们需要的VS2013需要用的文件。
新建工程:ConsoleApplication_pcre1_lib,可以建立 成EXE的,然后需要的话,再整改成LIB的。把刚刚cmake生成的新的文件和源代码全部COPY到这个工程中。如图所示:
修改字符集为空,然后引入目录文件夹:./sljit ,注意如果是64位的话,需要目标计算机为64的 MachineX64 (/MACHINE:X64)位,不然会引起冲突。预处理器的定义如下:WIN32;_DEBUG;_CONSOLE;_LIB;SUPPORT_UTF;SUPPORT_PCRE8;%(PreprocessorDefinitions);PCRE_STATIC;PCRE2_STATIC;PCRE2_CODE_UNIT_WIDTH=8;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;--enable-utf8;。OK,然后把一些测试文件里的main给屏蔽,或者把有main的这些测试文件给排除编译。然后编译,生成成功。下面来编译bnfParser2.
目前我把 config.h 中的
#define SUPPORT_LIBBZ2 1
/* #undef SUPPORT_LIBEDIT */
/* #undef SUPPORT_LIBREADLINE */
#define SUPPORT_LIBZ 1 - 给做了适当的屏蔽,因为有些功能和模块用不到,所以做了更改在配置中。
编译bnfParser2
将pcre-8.43放在bnfParser2子目录下,然后预编译器为:WIN32;_DEBUG;_CONSOLE;_LIB;SUPPORT_UTF;SUPPORT_PCRE8;%(PreprocessorDefinitions);PCRE_STATIC;PCRE2_STATIC;PCRE2_CODE_UNIT_WIDTH=8;HAVE_CONFIG_H;_CRT_SECURE_NO_DEPRECATE;_CRT_SECURE_NO_WARNINGS;--enable-utf8;,编译,成功。