开始下载了一个tar.gz版本的,解压后由于我的环境是Microsoft Visual C++ .NET 55601-652-0000007-18068,不能正常打开。 :( 看来看去要用cvs下载,没说的,下载wincvs:http://www.8848software.com/wincvs/wincvs.exe,安装运行。设置如下:cvs -d:pserver:anonymous@cvs.libexpat.org:/cvsroot/expat,model的名字也是expat,这样就可以下载expat的最新代码了,如果不行的话仔细看看设置。
下载expat后用vc.net打开,编译,很顺利。我编译了release_static版本,然后准备进行测试。新建立一个工程:testxml,选择控制台,空项目。加入testxml.cpp文件:
#include "expat.h"
static void XMLCALL startElement(void *userData, const char *name, const char **atts)
{
int i;
int *depthPtr = (int *)userData;
for (i = 0; i < *depthPtr; i++) putchar('\t');
*depthPtr += 1; puts(name);
}
static void XMLCALL endElement(void *userData, const char *name)
{
int *depthPtr = (int *)userData;
*depthPtr -= 1;
}
int main(int argc, char *argv[])
{
FILE* fp;
size_t len;
char buf[256*1024];
int done; int depth = 0;
XML_Parser parser = XML_ParserCreate(NULL);
XML_SetUserData(parser, &depth);
XML_SetElementHandler(parser, startElement, endElement);
if(argc<2) fp = fopen("play.xml","rb");
else fp = fopen(argv[1],"rb");
if(!fp) return 1;
len = fread(buf, 1, 256*1024, fp);
fclose(fp);
if (XML_Parse(parser, buf, len, done) == XML_STATUS_ERROR) return 1;
XML_ParserFree(parser);
return 0;
}
将expat路径下的lib路径copy到testxml的路径下,lib路径下只剩下expat.h,expat_external.h,libexpatMT.lib就可以了。
按如下修改配置:
属性页面: C/C++: 常规: 附加包含目录:./lib
预处理器:XML_STATIC
连接器: 常规: 附加库目录: ./lib
这样,编译就能通过了 :)