Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Для новичков > Ошибка при Linking console executable


Автор: knopka 27.11.2008, 19:38
при компиляции проекта выдаётся такая ошибка

Цитата

Linking console executable: bin/Debug/xmlapp
obj/Debug/main.o: In function `expat_parser':
/home/worker/project/xmlapp/xmlapp/xmlparse.h:13: undefined reference to `XML_ParserCreate'


не пойму в чём дело подскажите кто знает?

Автор: IKM2007 27.11.2008, 20:11
Покажи код.

Автор: knopka 28.11.2008, 18:51
на все xml функции выдаёт ошибку

Цитата

/home/worker/tmp/cc6hXtQK.o: In function `main':
xpt.cpp:(.text+0x2b): undefined reference to `XML_ParserCreate'
xpt.cpp:(.text+0x80): undefined reference to `XML_SetElementHandler'
xpt.cpp:(.text+0x120): undefined reference to `XML_Parse'
xpt.cpp:(.text+0x14a): undefined reference to `XML_ParserFree'
collect2: выполнение ld завершилось с кодом возврата 1


вот код 

Код

#include <stdio.h>
#include <expat.h>

using namespace std;
#define BUFFSIZE        8192

char Buff[BUFFSIZE];

int Depth;

static void XMLCALL
start(void *data, const char *el, const char **attr)
{
  int i;

  for (i = 0; i < Depth; i++)
    printf("  ");

  printf("%s", el);

  for (i = 0; attr[i]; i += 2) {
    printf(" %s='%s'", attr[i], attr[i + 1]);
  }

  printf("\n");
  Depth++;
}

static void XMLCALL
end(void *data, const char *el)
{
  Depth--;
}

int main()
{
   
XML_Parser p = XML_ParserCreate(NULL);

  if (! p) {
    fprintf(stderr, "Couldn't allocate memory for parser\n");
    exit(-1);
  }

  XML_SetElementHandler(p, start, end);

  for (;;)
  {
    int done;
    int len;

    len = (int)fread(Buff, 1, BUFFSIZE, stdin);
    if (ferror(stdin)) {
      fprintf(stderr, "Read error\n");
      exit(-1);
    }
    done = feof(stdin);

    if (XML_Parse(p, Buff, len, done) == XML_STATUS_ERROR) {
      /*fprintf(stderr, "Parse error at line %" XML_FMT_INT_MOD "u:\n%s\n",
              XML_GetCurrentLineNumber(p),
              XML_ErrorString(XML_GetErrorCode(p)));*/
      exit(-1);
    }

    if (done)
      break;
  }
  XML_ParserFree(p);
  return 0;
}

Автор: J0ker 28.11.2008, 22:42
либу подключи

Автор: knopka 29.11.2008, 16:25
Цитата

#include <expat.h>


а это, что?

Автор: J0ker 29.11.2008, 18:57
Цитата(knopka @ 29.11.2008,  16:25)
Цитата

#include <expat.h>


а это, что?

это подключение хедера
либа подключается на этапе линковки

Автор: knopka 1.12.2008, 02:20
и как её подключить? 
первый раз с таким сталкиваюсь, всегда хватало хедера

Автор: J0ker 1.12.2008, 04:47
Цитата(knopka @  1.12.2008,  02:20 Найти цитируемый пост)
и как её подключить? 

опции линкера смотри или опции проекта если IDE
Цитата(knopka @  1.12.2008,  02:20 Найти цитируемый пост)
первый раз с таким сталкиваюсь, всегда хватало хедера 

учите матчасть

Автор: knopka 1.12.2008, 09:41
а еслия компилю из консоли g++ имя файла . какие опции линкера смотреть

Автор: knopka 1.12.2008, 11:53
вопрос решил, спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)