Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
ProgRoman
1 / 1 / 0
Регистрация: 04.12.2010
Сообщений: 65
#1

XML Parser - C++

05.05.2014, 17:35. Просмотров 1012. Ответов 2
Метки нет (Все метки)

Разбираюсь с open source проектом http://conv-net.sourceforge.net/doc/index.html свёрточная нейронная сеть вот, в котором в свою очередь как я понимаю для сохранения и считывания сети используется другой проект expat http://expat.sourceforge.net/ скачал его (работаю под windows 7 на Microsoft Visual Studio 2010) в настройках проекта в дополнительные каталоги включаемых файлов добавил путь
C:\Program Files (x86)\Expat 2.1.0\Source\lib
C:\Program Files %28x86%29\Expat 2.1.0\Bin
в компоновщике в дополнительных каталогах библиотек добавил
C:\Program Files %28x86%29\Expat 2.1.0\Bin
в дополнительных зависимостях добавлена
libexpat.lib
ну и сама дллка добавлена в проект libexpat.dll при компиляции возникли ошибки
C++
1
2
3
4
5
Ошибка  15  error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_ParserFree в функции "int __cdecl parse(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::vector<class CvGenericPlane *,class std::allocator<class CvGenericPlane *> > &,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> > > &)" (?parse@@YAHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV12@11AEAV?$vector@PEAVCvGenericPlane@@V?$allocator@PEAVCvGenericPlane@@@std@@@2@AEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@std@@@2@@2@@Z) E:\Projects\ComputerVision\Samples\conv-net\project\conv-net\conv-net\cvconvnetparser.obj
Ошибка  16  error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_ErrorString в функции "int __cdecl parse(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::vector<class CvGenericPlane *,class std::allocator<class CvGenericPlane *> > &,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> > > &)" (?parse@@YAHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV12@11AEAV?$vector@PEAVCvGenericPlane@@V?$allocator@PEAVCvGenericPlane@@@std@@@2@AEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@std@@@2@@2@@Z)    E:\Projects\ComputerVision\Samples\conv-net\project\conv-net\conv-net\cvconvnetparser.obj
Ошибка  17  error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_GetErrorCode в функции "int __cdecl parse(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::vector<class CvGenericPlane *,class std::allocator<class CvGenericPlane *> > &,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> > > &)" (?parse@@YAHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV12@11AEAV?$vector@PEAVCvGenericPlane@@V?$allocator@PEAVCvGenericPlane@@@std@@@2@AEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@std@@@2@@2@@Z)   E:\Projects\ComputerVision\Samples\conv-net\project\conv-net\conv-net\cvconvnetparser.obj
Ошибка  18  error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_GetCurrentLineNumber в функции "int __cdecl parse(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::vector<class CvGenericPlane *,class std::allocator<class CvGenericPlane *> > &,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> > > &)" (?parse@@YAHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV12@11AEAV?$vector@PEAVCvGenericPlane@@V?$allocator@PEAVCvGenericPlane@@@std@@@2@AEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@std@@@2@@2@@Z)   E:\Projects\ComputerVision\Samples\conv-net\project\conv-net\conv-net\cvconvnetparser.obj
Ошибка  19  error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_Parse в функции "int __cdecl parse(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > &,class std::vector<class CvGenericPlane *,class std::allocator<class CvGenericPlane *> > &,class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,int,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,int> > > &)" (?parse@@YAHV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@AEAV12@11AEAV?$vector@PEAVCvGenericPlane@@V?$allocator@PEAVCvGenericPlane@@@std@@@2@AEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@HU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@H@std@@@2@@2@@Z)  E:\Projects\ComputerVision\Samples\conv-net\project\conv-net\conv-net\cvconvnetparser.obj
я понимаю, что это связано с этой библиотекой expat, но как исправить это не знаю...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2014, 17:35     XML Parser
Посмотрите здесь:

C++ и XML C++ Linux
C++ HTML Parser
C++ Builder E2034 Cannot convert 'wchar_t *' to 'const char *' Full parser context
Нужны исходники WAP WEB или XML Parser-а C++
json parser C++ Builder
C++ C++ и XML
Visual C++ XML и C++
C++ Builder Обвертка для JSON Parser
У меня в задании "Parser xml нужно реализовать самостоятельно." - это как? C++
C++ Builder Копирование определенного узла из одного XML в другой XML
C++ Builder [XML] - Как правильно сохранить XML с уровнями и отступами?
[XML] Как отсортировать данные в XML? C++ Builder

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
OstapBender
582 / 520 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
05.05.2014, 19:39     XML Parser #2
в студии можешь так сделать:
кинь либы в папку с проектом
и сверху напиши
C++
1
#pragma comment(lib,"имя либы.lib")
ProgRoman
1 / 1 / 0
Регистрация: 04.12.2010
Сообщений: 65
06.05.2014, 18:02  [ТС]     XML Parser #3
как-то особо не помогло ошибки теже..

Добавлено через 1 час 58 минут
что бы разобраться с библиотекой создал тестовый проект подключил библиотеку в инклудах и в компоновщике, дллку бросил в проект и написал простенькую программу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <stdio.h>
#include "expat.h"
 
void startElement(void *userData, const char *name, const char **atts)
{
  int i;
  int *depthPtr = (int*)userData;
  for (i = 0; i < *depthPtr; i++)
    printf("");
  puts(name);
  *depthPtr += 1;
}
 
void endElement(void *userData, const char *name)
{
  int *depthPtr = (int*)userData;
  *depthPtr -= 1;
}
 
int main(int argc, char* argv[])
{
 
    FILE *fp;
    fp = fopen("mybook.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);
 
    char buf[BUFSIZ];
    XML_Parser parser = XML_ParserCreate(NULL);
    int done;
    int depth = 0;
    XML_SetUserData(parser, &depth);
    XML_SetElementHandler(parser, startElement, endElement);
    do 
    {
        size_t len = fread(buf, 1, sizeof(buf), fp);
        done = len < sizeof(buf);
        if (!XML_Parse(parser, buf, len, done)) 
        {
            fprintf(stderr,"%s at line %d", XML_ErrorString(XML_GetErrorCode(parser)), XML_GetCurrentLineNumber(parser));
            return 1;
        }
    } while (!done);
 
    fclose(fp);
    XML_ParserFree(parser); 
 
    return 0;
}
но почему то всё равно ошибки
Ошибка 8 error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_ParserFree в функции main E:\Projects\testApplication\testXML\testXML\main.obj
Ошибка 9 error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_ErrorString в функции main E:\Projects\testApplication\testXML\testXML\main.obj
Ошибка 10 error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_GetErrorCode в функции main E:\Projects\testApplication\testXML\testXML\main.obj
Ошибка 11 error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_GetCurrentLineNumber в функции main E:\Projects\testApplication\testXML\testXML\main.obj
Ошибка 12 error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_Parse в функции main E:\Projects\testApplication\testXML\testXML\main.obj
Ошибка 13 error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_SetElementHandler в функции main E:\Projects\testApplication\testXML\testXML\main.obj
Ошибка 14 error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_SetUserData в функции main E:\Projects\testApplication\testXML\testXML\main.obj
Ошибка 15 error LNK2019: ссылка на неразрешенный внешний символ __imp_XML_ParserCreate в функции main E:\Projects\testApplication\testXML\testXML\main.obj
Ошибка 16 error LNK1120: 8 неразрешенных внешних элементов E:\Projects\testApplication\testXML\x64\Debug\testXML.exe 1
что я могу не так делать..

Добавлено через 2 часа 43 минуты
тестовое приложение запустил всё заработало в дополнительных зависимостях надо было libexpatwMT.lib цеплять и всё будет хорошо) привожу тестовую программу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
#include <stdio.h>
#include <expat.h>
 
#if defined(__amigaos__) && defined(__USE_INLINE__)
#include <proto/expat.h>
#endif
 
#ifdef XML_LARGE_SIZE
#if defined(XML_USE_MSC_EXTENSIONS) && _MSC_VER < 1400
#define XML_FMT_INT_MOD "I64"
#else
#define XML_FMT_INT_MOD "ll"
#endif
#else
#define XML_FMT_INT_MOD "l"
#endif
 
#define BUFFSIZE        8192
 
 
#define BUFFSIZE        8192
 
char Buff[BUFFSIZE];
 
int Depth;
 
static void XMLCALL
start(void *data, const char *el, const char **attr)
{  
 
  for (int i = 0; i < Depth; i++)
    printf("  ");
 
  for(int i = 0;el[i]; i+=2)
  {
      printf("%c",el[i]);
  }
  
 
  for (int i = 0; attr[i]; i += 2) 
  {
    for(int j = 0;attr[i][j]; j+=2)
    {
      printf("%c", attr[i][j]);
    }
    printf(" = ");
    for(int j = 0;attr[i+1][j]; j+=2)
    {
      printf("%c", attr[i+1][j]);
    }
 
    printf("   ");
  }
 
  printf("\n");
  Depth++;
}
 
static void XMLCALL
end(void *data, const char *el)
{
  Depth--;
}
 
int main(int argc, char *argv[])
{
    
    FILE *fp;
    fp = fopen("1.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 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, fp);
    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);
  system("pause");
  return 0;
}
сейчас буду с опенсорс проектом разбираться, там я наверно так же не те либы цеплял...
Yandex
Объявления
06.05.2014, 18:02     XML Parser
Ответ Создать тему
Опции темы

Текущее время: 09:32. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru