0

这是我第一次使用外部标题,我不知道外籍人士。Expat官方网站对初学者没有用处。我需要使用 expat.h 在 C 中编译 XML 解析器代码。我已经下载了外籍文件并将路径包含在头文件中。但是在编译时出现错误。在windows平台 在此处输入图像描述

在此处输入图像描述

    #include "C:\Program Files (x86)\Expat 2.2.7\Source\lib\expat.h"
    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>

     int parse_xml(char *buff)
     {
    FILE *fp;
    fp = fopen("config.xml", "r");
    if(fp == NULL)
    {
        printf("Failed to open file\n");
        return 1;
    }

   /* Obtain the file size. */
    fseek (fp, 0, SEEK_END);
    size_t file_size = ftell(fp);
    rewind(fp);

    XML_Parser parser = XML_ParserCreate(NULL);
    int done;
    memset(buff, 0, sizeof(buff));

    do
    {
        size_t len = fread(buff, 1, file_size, fp);
        done = len < sizeof(buff);

        if(XML_Parse(parser, buff, len, done) == XML_STATUS_ERROR)
        {
            printf("%s at line %d\n", XML_ErrorString(XML_GetErrorCode(parser)),
                                      XML_GetCurrentLineNumber(parser));
            return 1;
        }
    }
    while(!done);

    fclose(fp);
    XML_ParserFree(parser);

    return 0;
}

这是代码,路径是安装后 expat.h 所在的位置。

xml代码

`<catalog>
   <book id="bk101">
      <author>Gambardella, Matthew</author>
      <title>XML Developer's Guide</title>
      <genre>Computer</genre>
      <price>44.95</price>
      <publish_date>2000-10-01</publish_date>
      <description>An in-depth look at creating applications
      with XML.</description>
   </book>
   <book id="bk102">
      <author>Ralls, Kim</author>
      <title>Midnight Rain</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-12-16</publish_date>
      <description>A former architect battles corporate zombies,
      an evil sorceress, and her own childhood to become queen
      of the world.</description>
   </book>
   <book id="bk103">
      <author>Corets, Eva</author>
      <title>Maeve Ascendant</title>
      <genre>Fantasy</genre>
      <price>5.95</price>
      <publish_date>2000-11-17</publish_date>
      <description>After the collapse of a nanotechnology
      society in England, the young survivors lay the
      foundation for a new society.</description>
   </book>
</catalog>`

请帮忙!

4

2 回答 2

1

您似乎知道您必须这样做才能-lexpat使头文件实际链接到某些东西,但是您忘记将 Expat 添加到链接路径中。添加此命令行选项:-L /path/to/your/expat/lib/directory. 对于 WinMain 错误,请尝试添加-Wl,-subsystem,console. 希望能帮助到你!

于 2019-08-06T14:30:55.380 回答
0

Mingw 提供 expat 库,因此在安装自身时,我们必须选择安装 expat 选项。

gcc filename.c -llibexpat足以编译代码而不会出错。没有其他路径包括是不必要的。

于 2019-08-12T11:19:11.140 回答