#include <mxml.h>
#include <stdio.h>

void main()
{
    FILE *fp;

    mxml_node_t *tree;
    mxml_node_t *node  = NULL;

    fp = fopen("1.xml", "r");

    tree = mxmlLoadFile(NULL, fp, MXML_OPAQUE_CALLBACK);

    node = tree;

    fprintf(stderr, "Element::%s\n", mxmlGetElement(node));
    fprintf(stderr, "Value::%s\n", mxmlGetText(node, 0));
}


上面是我的代码段...错误是

xmlparsing.c:在函数“ main”中:
xmlparsing.c:20:2:警告:格式“%s”期望的类型为“ char *”,但是参数3的类型为“ int” [-Wformat]
xmlparsing.c:21:2:警告:格式“%s”期望参数为“ char *”类型,但参数3的类型为“ int” [-Wformat]
/tmp/ccAYsMOB.o:在函数“ main”中:
xmlparsing.c :(。text + 0x58):对'mxmlGetElement'的未定义引用
xmlparsing.c :(。text + 0x8c):对'mxmlGetText'的未定义引用
collect2:ld返回1退出状态


比为什么已经包含了mxml.h未定义引用?我在Internet上搜索了此功能,链接显示该文件位于mxml.h头文件中。

最佳答案

您的问题出在您的链接器上,请参阅最后一条消息:

collect2: ld returned 1 exit status


您需要通知gcc(这是对编译器和链接器的调用,其中包括include路径和库路径。
包含路径是找到mxml.h的位置,可通过以下方法完成:

-I<path/to/include/mxml.h>


库路径给出:

-L<path/to/shared/libmxml.a>


因此,您总共应该具有:

gcc yourfile.c -I <path/to/include/mxml.h> -L <path/to/shared/libmxml.a>


您可以根据需要包括其他路径。

关于c - 无法在mxml中使用mxmlGetText和mxmlGetElemet,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24286265/

10-12 21:35