2013-11-19 2 views
0

Я пытаюсь скомпилировать программу на C с использованием eclipse, и у меня есть неопределенная ссылка на« главную »ошибку, но у моего кода есть основная.Неопределенная ссылка на `main '- Eclipse using libxml2

Компоновщик использует: -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 

основной .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 и CRC заголовка .h, но я думаю, что они неактуальны.

Я не знаю, в чем проблема, я смотрю в Интернете, но я не могу найти ответ на эту проблему.

Пожалуйста, помогите мне.

Заранее спасибо.

[EDIT] Выход с -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] 
+0

Знаете ли вы, что инициировал удаленный '-c'? – alk

+0

Я только что отредактировал сообщение с выходом с -c – Ita

+0

Прошу прощения, я не говорю по-испански. Также я не знал, что gcc делает. – alk

ответ

0

Вы, кажется, не хватает, чтобы связать объектный файл экспортирующей main(). Я подозреваю, что вы не компилируете main.c.


Update:

ли dataCatcherXML.c înlcude необходимые заголовки, которые приходят с libxml?

+0

Да, я пишу их в main.c "#include " – Ita

+0

Каждая единица перевода (типичный файл '* .c') должна включать то, что необходимо. Поэтому также необходимо, чтобы данные dataCatcherXML.c' были необходимы. – alk

+0

Как связать файл-объект экспорта main()? – Ita

Смежные вопросы