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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
#1

Компиляция библиотеки libxml под c++ - C++

31.01.2014, 11:24. Просмотров 1597. Ответов 32
Метки нет (Все метки)

Под libxml есть библиотека xmlwrapp позволяющая работать с libxml под с++. Проблема в ее компиляции: по адресу
Кликните здесь для просмотра всего текста
http://libxmlplusplus.sourceforge.net/
скачал исходники и с помощью msbuild собрал через master.proj либы, подключил к своему проекту, но он ругается на "undefined reference" вызываемых функций.
Подключил вроде правильно (работаю под qt, но думаю это не имеет значения), сами libxml работают вполне. В самих либах остались ссылки на obj файлы проекта xmlwrapp.

Прошу помощи, в чем может быть проблема?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 11:24     Компиляция библиотеки libxml под c++
Посмотрите здесь:

Компиляция dll библиотеки - C++
Как правильно скомпилировать dll библиотеку, чтобы имена методов не изменялись? Например, у меня есть метод с именем Java_Test_test, а...

Компиляция библиотеки через make.exe - C++
Скачал исходный код библиотеки oglft-0.9, скачал make-3.81.exe, не могу понять как скомпилировать, подскажите. В папке есть файлы ...

Компиляция, линковка, статические и динамические библиотеки - C++
Доброго вам времени суток. Обращаюсь к вам со списком близких по теме вопросов. Если вам не сложно, хотя бы напишите URL или книгу, где об...

Компиляция под Windows x64 - C++
Здравствуйте есть 2 компьютера на 1 стоит х32 на котором компилируется программа а на другом х64 винда на котором нужно программу...

Компиляция под 32 битный процессор - C++
В общем название темы говорит само за себя. У меня стоит Win 7 64x разрядная и MS VS 2013. Когда я компилирую приложение, то оно спокойно...

Компиляция проекта под linux из windows - C++
Скорее всего раздел не подходит, просто не знаю к какому это относится больше... Вот есть проект Visual Studio C++, это библиотека для...

Компиляция серьезной графики под Mingw - C++
Возьмем для примера gdi+ (c всем остальным у меня получалось абсолютно тоже. только winapi из windows.h пока могу) пишу элементарный...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
31.01.2014, 11:37     Компиляция библиотеки libxml под c++ #2
Как подключал библиотеку?
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
31.01.2014, 11:44  [ТС]     Компиляция библиотеки libxml под c++ #3
C++ (Qt)
1
2
3
4
INLUDEPATH += .../include
 
LIBS += ... \
       .../xmlwrapp.lib
... - некоторый путь или библиотека.
DrOffset
7060 / 4201 / 949
Регистрация: 30.01.2014
Сообщений: 6,968
31.01.2014, 12:32     Компиляция библиотеки libxml под c++ #4
Сбрось лог ошибок. Какие конкретно функции не находит.
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
31.01.2014, 12:35     Компиляция библиотеки libxml под c++ #5
А расширение у неё точно .lib ? Не .a ?
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
31.01.2014, 12:46  [ТС]     Компиляция библиотеки libxml под c++ #6
Кликните здесь для просмотра всего текста
Код
debug/main.o: In function `main':
D:\QtProject\NetBrowser\Test\untitled/main.cpp:97: undefined reference to `xml::throw_on_error'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:97: undefined reference to `xml::tree_parser::tree_parser(char const*, xml::error_handler&)'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:98: undefined reference to `xml::tree_parser::get_document()'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:101: undefined reference to `xml::throw_on_error'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:101: undefined reference to `xslt::stylesheet::stylesheet(char const*, xml::error_handler&)'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:104: undefined reference to `xml::throw_on_error'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:104: undefined reference to `xslt::stylesheet::apply(xml::document const&, xml::error_handler&)'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:106: undefined reference to `xml::operator<<(std::ostream&, xml::document const&)'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:101: undefined reference to `xslt::stylesheet::~stylesheet()'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:106: undefined reference to `xml::tree_parser::~tree_parser()'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:101: undefined reference to `xslt::stylesheet::~stylesheet()'
D:\QtProject\NetBrowser\Test\untitled/main.cpp:106: undefined reference to `xml::tree_parser::~tree_parser()'
debug/main.o: In function `_tcf_1':
c:/Qt/include/xmlwrapp/init.h:130: undefined reference to `xml::init::~init()'
debug/main.o: In function `_tcf_2':
c:/Qt/include/xsltwrapp/init.h:93: undefined reference to `xslt::init::~init()'
debug/main.o: In function `_static_initialization_and_destruction_0':
c:/Qt/include/xmlwrapp/init.h:130: undefined reference to `xml::init::init()'
debug/main.o: In function `_static_initialization_and_destruction_0':
Makefile.Debug:77: recipe for target 'debug\untitled.exe' failed
c:/Qt/include/xsltwrapp/init.h:93: undefined reference to `xslt::init::init()'
collect2.exe: error: ld returned 1 exit status
mingw32-make[1]: Leaving directory 'D:/QtProject/NetBrowser/Test/untitled'
makefile:34: recipe for target 'debug' failed
mingw32-make[1]: *** [debug\untitled.exe] Error 1
mingw32-make: *** [debug] Error 2
12:40:33: ѕроцесс ЂC:\Qt\Qt5.2.0\Tools\mingw48_32\bin\mingw32-make.exeї завершилс€ с кодом 2.
ќшибка при сборке/установке проекта untitled (комплект: Desktop Qt 5.2.0 MinGW 32bit)
¬о врем€ выполнени€ этапа Ђ—боркаї
12:40:33: ѕрошло времени: 00:02.


По быстрому набросал: он, таким образом, не видит ни одну функцию.

Добавлено через 2 минуты
Цитата Сообщение от castaway Посмотреть сообщение
А расширение у неё точно .lib ? Не .a ?
Да, .lib, тк собрана под виндой под VS10(пробовал и под 2012). libxml так же собранные под студией вполне себе работают.
DrOffset
7060 / 4201 / 949
Регистрация: 30.01.2014
Сообщений: 6,968
31.01.2014, 12:49     Компиляция библиотеки libxml под c++ #7
Цитата Сообщение от dBuSh83 Посмотреть сообщение
Да, .lib, тк собрана под виндой под VS10(пробовал и под 2012). libxml так же собранные под студией вполне себе работают.
Собственно в это и проблема. Нельзя С++ библиотеки собранные в VS линковать в minGW из-за разного ABI.

Либо использовать Qt для VS. Либо, что проще, собрать xmlwrapp для mingw. Саму libxml пересобирать не надо, так как она написана на С и ABI языка С переносим между компиляторами.
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
31.01.2014, 20:51  [ТС]     Компиляция библиотеки libxml под c++ #8
Цитата Сообщение от DrOffset Посмотреть сообщение
Собственно в это и проблема. Нельзя С++ библиотеки собранные в VS линковать в minGW из-за разного ABI.
А почему libxml и libxslt скомпилированные под VS работают?

Добавлено через 14 минут
Цитата Сообщение от DrOffset Посмотреть сообщение
Либо использовать Qt для VS. Либо, что проще, собрать xmlwrapp для mingw. Саму libxml пересобирать не надо, так как она написана на С и ABI языка С переносим между компиляторами.
Дошло... Проблема, мозгов не хватит, под mingw перекомпилировать.
DrOffset
7060 / 4201 / 949
Регистрация: 30.01.2014
Сообщений: 6,968
31.01.2014, 22:56     Компиляция библиотеки libxml под c++ #9
Цитата Сообщение от dBuSh83 Посмотреть сообщение
А почему libxml и libxslt скомпилированные под VS работают?
Это вообще отдельная и давняя проблема. Сейчас многие разработчики компиляторов делают шаги в сторону получения единого ABI для С++, но совершенства ждать придется долго. Intel C++ Compiler например имеет совместимость c VS C++. А MinGW такой совместимости не имеет. У C++Builder тоже свой вариант ABI не совместимый ни с тем ни с другим. Зато тот же Intel C++ Compiler, но уже под *nix имеет совместимость с тамошним G++ (GCC), с ним же совместим Clang. Подробнее про это - тут.

Вообще стандартный способ под Windows писать кросскопиляторные ООП библиотеки - использовать COM. Я понимаю, что это не твой случай, просто к сведению.

Добавлено через 10 минут
Цитата Сообщение от dBuSh83 Посмотреть сообщение
Проблема, мозгов не хватит, под mingw перекомпилировать.
Надо подставить MSYS по этой инструкции, а потом поменять ему дефолтный компилятор на тот, который поставляется с Qt. В той же инструкции есть примеры сборки разных библиотек.
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
02.02.2014, 14:48  [ТС]     Компиляция библиотеки libxml под c++ #10
Цитата Сообщение от DrOffset Посмотреть сообщение
Надо подставить MSYS по этой инструкции, а потом поменять ему дефолтный компилятор на тот, который поставляется с Qt
Надеюсь, разберусь! Спасибо за помощь!
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
17.02.2014, 14:47  [ТС]     Компиляция библиотеки libxml под c++ #11
Из исходников посредством мейкфайлов и mingw удалось без MSYS собрать libxml2, но с libxslt уже пошли проблемы: в виде "undefined reference to xsltEvalAVT"... Проверил зависимости - все объявлено и вполне все должно компилиться.
DrOffset
7060 / 4201 / 949
Регистрация: 30.01.2014
Сообщений: 6,968
17.02.2014, 18:56     Компиляция библиотеки libxml под c++ #12
Цитата Сообщение от dBuSh83 Посмотреть сообщение
Из исходников посредством мейкфайлов и mingw удалось без MSYS собрать libxml2, но с libxslt уже пошли проблемы: в виде "undefined reference to xsltEvalAVT"... Проверил зависимости - все объявлено и вполне все должно компилиться.
Надо бы удостовериться, что либа собиралась именно С компилятором, а не С++, и линковалась как С библиотека, а не как С++. Если либа используется в С++ коде, надо проверить наличие extern "C" у вызовов из библиотеки.
В общем можно выложить получившийся бинарь, посмотрим вместе
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
18.02.2014, 14:13  [ТС]     Компиляция библиотеки libxml под c++ #13
Скомпилировал с игнорированием ошибок: нет только libxslt.dll файла. На счет extern "C" - проверял - все есть. Собиралась gcc: раз не g++ - значит, как я понял, Сишным компилятором.
Вложения
Тип файла: zip libxml2.zip (2.18 Мб, 11 просмотров)
DrOffset
7060 / 4201 / 949
Регистрация: 30.01.2014
Сообщений: 6,968
18.02.2014, 14:22     Компиляция библиотеки libxml под c++ #14
Цитата Сообщение от dBuSh83 Посмотреть сообщение
Скомпилировал с игнорированием ошибок: нет только libxslt.dll файла. На счет extern "C" - проверял - все есть. Собиралась gcc: раз не g++ - значит, как я понял, Сишным компилятором.
Посмотрел сейчас таблицу экспорта и функции xsltEvalAVT в твоих сборках библиотек не нашел. Может быть версии заголовочных файлов разные? В смысле в студии и в mingw.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.02.2014, 15:48     Компиляция библиотеки libxml под c++
Еще ссылки по теме:

Компиляция простейшего кода на C++ под GNU/Linux - C++
Проблема в компиляции простейшего кода на c++ под Linux: void hello(){ rintf(&quot;Hello!\n&quot;); return 0; } Вот такая...

Компиляция в командной строке (cl.exe) под платформы Windows XP и выше - C++
Здравствуйте! Столкнулся с проблемой что во время компиляции в командной строке, выходной файл (.exe) не запускается на Windows XP (32...

Проверка валидности в libxml++ - C++
Подскажите, как с помощью этой библиотеки можно проверить валидность документа на соответствие XML. Вариант через исключение при создании...

Библиотеки под С++ для реализации SOAP 1.2 - C++
Кто может посоветовать библиотеки для SOAP 1.2? Есть есть возможность, то скиньте ссылки на них. Если у кого есть примеры по...

MinGW подключение библиотеки lib из под Windows - C++
Подскажите, как подключить библиотеку в формате lib на MinGW. Использую Windows 7 x64 + MinGW. Скачал libsndfile для windows. В наборе идут...


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

Или воспользуйтесь поиском по форуму:
dBuSh83
5 / 5 / 0
Регистрация: 10.07.2013
Сообщений: 99
18.02.2014, 15:48  [ТС]     Компиляция библиотеки libxml под c++ #15
Цитата Сообщение от DrOffset Посмотреть сообщение
Посмотрел сейчас таблицу экспорта и функции xsltEvalAVT в твоих сборках библиотек не нашел.
Не знаю, выносится она или нет, но для других функций она используется.
Цитата Сообщение от DrOffset Посмотреть сообщение
Может быть версии заголовочных файлов разные? В смысле в студии и в mingw.
Не совсем понял, что имеется в виду.
Миниатюры
Компиляция библиотеки libxml под c++  
Yandex
Объявления
18.02.2014, 15:48     Компиляция библиотеки libxml под c++
Ответ Создать тему
Опции темы

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