gpt4 book ai didi

c - 对 `main' 的 undefined reference - 使用 libxml2 的 Eclipse

转载 作者:行者123 更新时间:2023-11-30 17:44:10 26 4
gpt4 key购买 nike

我正在尝试使用 eclipse 编译 C 程序,并且有一个对“main”错误的 undefined reference ,但我的代码有一个 main。

链接器正在使用:-nostartfiles、-nodefaultlibs、-nostdlib

它使用了 -c 但我删除了它,因为它给了我其他错误

输出:

make all 
Building file: ../crc.c
Invoking: GCC C Compiler
gcc -I/usr/include/libxml2/libxml -O0 -g3 -Wall -fmessage-length=0 -MMD -MP -MF"crc.d" -MT"crc.d" -o "crc.o" "../crc.c" -I/usr/include/libxml2 -lxml2 -lz -lm
/usr/lib/gcc/i686-linux-gnu/4.6/../../../i386-linux-gnu/crt1.o: In function `_start':
(.text+0x18): undefined reference to `main'
collect2: ld devolvió el estado de salida 1
make: *** [crc.o] Error 1

main.c:

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <stdio.h>
#include <stdlib.h>
#include <xmlmemory.h>
#include "crc.h"

#define BIT_SINCRONIA 0X47
#define PID_PAT 0X00
#define table_pat 0x00

FILE *fp2;

int main() {
//I erased too much lines of code just
unsigned long crc123 = crcFast(aux, strlen(aux));
printf("The crcFast() is %X\n", crcFast(aux, strlen(aux)));
sprintf(aux + strlen(aux), "%X", crcFast(aux, strlen(aux)));
printf("\nTrama es %s\n", aux);
printf("ad %X", crc123);

crc1 = (crc123 & 0xff000000) >> 24;
crc2 = (crc123 & 0x00ff0000) >> 16;
crc3 = (crc123 & 0x0000ff00) >> 8;
crc4 = (crc123 & 0x000000ff);
fputc(crc1, fp2);
fputc(crc2, fp2);
fputc(crc3, fp2);
fputc(crc4, fp2);
fclose(fp2);

}
return 0;

}

其他函数:(在此函数中,我有“类型 XX 无法解析”(XX = xmlDocPtr、xmlNodePtr 等)和“字段 YY 无法解析”(YY = xmlChildrenNode、名称等)

void XMLdataCatcher(int argc, char **argv) {

xmlDocPtr doc;
xmlNodePtr root;
xmlNodePtr node;
xmlNodePtr children;
xmlNodePtr children2;
char bit_error[1024] = "as";

doc = xmlParseFile("/home/practicante/XML/prueba1.xml");
if (!doc) {
printf("Error al cargar documento XML\n");
}

root = xmlDocGetRootElement(doc);
node = root->xmlChildrenNode;
while (node != NULL ) {
children = node->xmlChildrenNode;
while (children != NULL ) {
if (!(xmlStrcmp(node->name, "bit_error"))) {
printf("%s: %s\n", node->name, xmlNodeGetContent(node));
printf("%s\n", bit_error);
strcpy(bit_error, xmlNodeGetContent(node));
printf("%s\n", bit_error);
// bit_error = atoi(xmlNodeBufGetContent(node);
}
children2 = children->xmlChildrenNode;
while (children2 != NULL ) {
printf("%s: %s\n", children->name, xmlNodeGetContent(children));
children2 = children2->next;
}
children = children->next;
}
node = node->next;
}

printf("bit_error2 = %d", 1);

// return (1);
}

还有另一个名为 crc.c 的函数和 header crc.h,但我认为它们是不相关的。

我不知道这里的问题是什么,我在互联网上查找,但找不到该问题的答案。

请帮助我。

提前致谢。

[编辑]带-c的输出:

gcc -I/usr/include/libxml2/libxml -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"dataCatcherXML.d" -MT"dataCatcherXML.d" -o "dataCatcherXML.o" "../dataCatcherXML.c" -I/usr/include/libxml2 -lxml2 -lz -lm
../dataCatcherXML.c: En la función ‘XMLdataCatcher’:
../dataCatcherXML.c:17:2: error: nombre de tipo ‘xmlDocPtr’ desconocido
../dataCatcherXML.c:18:2: error: nombre de tipo ‘xmlNodePtr’ desconocido
../dataCatcherXML.c:19:2: error: nombre de tipo ‘xmlNodePtr’ desconocido
../dataCatcherXML.c:20:2: error: nombre de tipo ‘xmlNodePtr’ desconocido
../dataCatcherXML.c:21:2: error: nombre de tipo ‘xmlNodePtr’ desconocido
../dataCatcherXML.c:24:2: aviso: declaración implícita de la función ‘xmlParseFile’ [-Wimplicit-function-declaration]
../dataCatcherXML.c:26:3: aviso: declaración implícita de la función ‘printf’ [-Wimplicit-function-declaration]
../dataCatcherXML.c:26:3: aviso: declaración implícita incompatible de la función interna ‘printf’ [activado por defecto]
../dataCatcherXML.c:29:2: aviso: declaración implícita de la función ‘xmlDocGetRootElement’ [-Wimplicit-function-declaration]
../dataCatcherXML.c:30:13: error: argumento de tipo inválido de ‘->’ (se tiene ‘int’)
../dataCatcherXML.c:31:17: error: ‘NULL’ no se declaró aquí (primer uso en esta función)
../dataCatcherXML.c:31:17: nota: cada identificador sin declarar se reporta sólo una vez para cada función en el que aparece
../dataCatcherXML.c:32:18: error: argumento de tipo inválido de ‘->’ (se tiene ‘int’)
../dataCatcherXML.c:34:4: aviso: declaración implícita de la función ‘xmlStrcmp’ [-Wimplicit-function-declaration]
../dataCatcherXML.c:34:24: error: argumento de tipo inválido de ‘->’ (se tiene ‘int’)
../dataCatcherXML.c:35:5: aviso: declaración implícita incompatible de la función interna ‘printf’ [activado por defecto]
../dataCatcherXML.c:35:28: error: argumento de tipo inválido de ‘->’ (se tiene ‘int’)
../dataCatcherXML.c:35:5: aviso: declaración implícita de la función ‘xmlNodeGetContent’ [-Wimplicit-function-declaration]
../dataCatcherXML.c:37:5: aviso: declaración implícita de la función ‘strcpy’ [-Wimplicit-function-declaration]
../dataCatcherXML.c:37:5: aviso: declaración implícita incompatible de la función interna ‘strcpy’ [activado por defecto]
../dataCatcherXML.c:37:5: aviso: el paso del argumento 2 de ‘strcpy’ crea un puntero desde un entero sin una conversión [activado por defecto]
../dataCatcherXML.c:37:5: nota: se esperaba ‘const char *’ pero el argumento es de tipo ‘int’
../dataCatcherXML.c:41:24: error: argumento de tipo inválido de ‘->’ (se tiene ‘int’)
../dataCatcherXML.c:43:5: aviso: declaración implícita incompatible de la función interna ‘printf’ [activado por defecto]
../dataCatcherXML.c:43:32: error: argumento de tipo inválido de ‘->’ (se tiene ‘int’)
../dataCatcherXML.c:44:26: error: argumento de tipo inválido de ‘->’ (se tiene ‘int’)
../dataCatcherXML.c:46:23: error: argumento de tipo inválido de ‘->’ (se tiene ‘int’)
../dataCatcherXML.c:48:14: error: argumento de tipo inválido de ‘->’ (se tiene ‘int’)
../dataCatcherXML.c:51:2: aviso: declaración implícita incompatible de la función interna ‘printf’ [activado por defecto]

最佳答案

您似乎缺少链接导出 main() 的目标文件。我怀疑你没有编译 main.c

<小时/>

更新:

dataCatcherXML.c 是否包含 libxml 附带的必要 header ?

关于c - 对 `main' 的 undefined reference - 使用 libxml2 的 Eclipse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079828/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com