..:: Greta ::.. [原创文章,转载请保留或注明出处:http://www.nk975.com/sswater/zh/greta/index.htm] GRETA 为 C++ 提供了兼容 Perl 5 的正则表示支持。GRETA的主页位于:http://research.microsoft.com/projects/greta/。今天,我们并不讨论正则表达式本身以及 Greta 与其他正则表达式之间有什么不同,因为这方面的资料很多。我将主要介绍怎样在 Visual C++ 中正确的使用 Greta,举例一步一步进行说明: 下载 请在 GRETA 主页 上下载源代码来使用。比如:GRETA 2.6.4 for VC6,你将得到压缩文件:'greta-2.6.4-vc6.zip'。也可以从本站下载源代码。 请不要下载 lib 形式的 Greta 库。在很多网站上你可能找得到类似 greta.lib 的 lib 库,但是这种 lib 版本并不一定满足你的需求,或者可能产生连接错误。 使用 GRETA 库中一共有 6 个程序文件: regexpr2.h regexpr2.cpp syntax2.h syntax2.cpp restack.h reimpl2.h 可以有两种方法使用: (1) 直接把这6个文件加入到 project 中。(不推荐) (2) 在 workspace 中专门为 Greta 创建一个类型为:'Win32 Static Library' 的 project 。 第1种:直接加入 Project (强烈不推荐) 强烈不推荐直接将 greta 的文件直接加入 project。你如果一定要这么做,请注意一下,如果你的项目使用了 precompiled header,请注意添加 #include "stdafx.h" 到 regexpr2.cpp 和 syntax2.cpp 中。 第2种: 创建一个 'Win32 Static Library' 类型的 Project 将一步一步说明:第一步:创建一个空的 workspace。例如起名 'Test':第2步:创建主项目,这个项目将使用 Greta。例如控制台类型,起名 'Main':第3步:创建 greta 项目。选择 'Win32 Static Library' 类型。并且将它作为 'Main' 的依赖。按 OK 以后,不选择 'Pre-Compiled header' 和 'MFC Support'。第4步:将下载下来的 zip 包中的 6 个文件放入 greta 的目录中,并添加到 greta 项目中来:第4步:从帮助文件中复制一个例子程序到主项目中来。帮助文件就是下载的 greta 压缩包中的 htm 文件。注意要使用 #include "../greta/regexpr2.h"。选择 'Main' 为活动 project,然后编译并运行:你将得到运行结果:目前为止,我们已经成功完成了一个使用 greta 的项目。[下载本页中的例子程序]如果你需要 UNICODE 版本,或者你使用 greta 的程序是 dll,那么请继续下面的章节。 ..:: 高级 ::.. 1. UNICODE 版本 如果你使用 greta 的项目是 UNICODE 版本,那么 greta 项目也必须是 UNICODE 版本。举例说明:第1步:给 greta 项目添加一个 'Unicode Debug' 配置:第2步:在项目设定中,添加 '_UNICODE' 和 'UNICODE' 两个预定义宏。(C/C++, General, Preprocessor defininitions)第3步:重复前两步,则可以为 Release 和主项目都添加上相应的 Unicode 版本。 2. Runtime library 在很多种情况下,特别是在主项目是 dll 时,你需要确认一下 greta 项目和主项目使用相同的 runtime library,否则你可能会得到一个连接错误。第1步:首先确定主项目使用哪一个 runtime library:第2步:在同样的位置,修改 greta 项目,使 greta 项目使用的 runtime library 与主项目一致。这样,你就可以正确的连接了。 3. 为什么不推荐下载 greta.lib 问:为什么不推荐下载 greta.lib 以及为什么会有连接错误? 答:就是基于前面所说的两点原因。因为下载下来的 lib 文件,是否是 UNICODE 版本未知,使用哪一个 runtime library 也是未知,因此不一定与你的主项目一致,如果不同就会产生连接错误。