Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99

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

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

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

Прошу помощи, в чем может быть проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
31.01.2014, 11:24
Ответы с готовыми решениями:

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

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

Создание/компиляция статической .Lib библиотеки С++
Здравствуйте, Пытаюсь разобраться, как вообще создавать или скомпилировать сторонние статические библиотеки и подключать их к проекту,...

32
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
31.01.2014, 11:37
Как подключал библиотеку?
0
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99
31.01.2014, 11:44  [ТС]
C++ (Qt)
1
2
3
4
INLUDEPATH += .../include
 
LIBS += ... \
       .../xmlwrapp.lib
... - некоторый путь или библиотека.
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
31.01.2014, 12:32
Сбрось лог ошибок. Какие конкретно функции не находит.
0
Эксперт С++
4986 / 3093 / 456
Регистрация: 10.11.2010
Сообщений: 11,170
Записей в блоге: 10
31.01.2014, 12:35
А расширение у неё точно .lib ? Не .a ?
0
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99
31.01.2014, 12:46  [ТС]
Кликните здесь для просмотра всего текста
Code
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
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 так же собранные под студией вполне себе работают.
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
31.01.2014, 12:49
Цитата Сообщение от dBuSh83 Посмотреть сообщение
Да, .lib, тк собрана под виндой под VS10(пробовал и под 2012). libxml так же собранные под студией вполне себе работают.
Собственно в это и проблема. Нельзя С++ библиотеки собранные в VS линковать в minGW из-за разного ABI.

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

Добавлено через 14 минут
Цитата Сообщение от DrOffset Посмотреть сообщение
Либо использовать Qt для VS. Либо, что проще, собрать xmlwrapp для mingw. Саму libxml пересобирать не надо, так как она написана на С и ABI языка С переносим между компиляторами.
Дошло... Проблема, мозгов не хватит, под mingw перекомпилировать.
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
31.01.2014, 22:56
Цитата Сообщение от 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. В той же инструкции есть примеры сборки разных библиотек.
1
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99
02.02.2014, 14:48  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Надо подставить MSYS по этой инструкции, а потом поменять ему дефолтный компилятор на тот, который поставляется с Qt
Надеюсь, разберусь! Спасибо за помощь!
0
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99
17.02.2014, 14:47  [ТС]
Из исходников посредством мейкфайлов и mingw удалось без MSYS собрать libxml2, но с libxslt уже пошли проблемы: в виде "undefined reference to xsltEvalAVT"... Проверил зависимости - все объявлено и вполне все должно компилиться.
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
17.02.2014, 18:56
Цитата Сообщение от dBuSh83 Посмотреть сообщение
Из исходников посредством мейкфайлов и mingw удалось без MSYS собрать libxml2, но с libxslt уже пошли проблемы: в виде "undefined reference to xsltEvalAVT"... Проверил зависимости - все объявлено и вполне все должно компилиться.
Надо бы удостовериться, что либа собиралась именно С компилятором, а не С++, и линковалась как С библиотека, а не как С++. Если либа используется в С++ коде, надо проверить наличие extern "C" у вызовов из библиотеки.
В общем можно выложить получившийся бинарь, посмотрим вместе
0
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99
18.02.2014, 14:13  [ТС]
Скомпилировал с игнорированием ошибок: нет только libxslt.dll файла. На счет extern "C" - проверял - все есть. Собиралась gcc: раз не g++ - значит, как я понял, Сишным компилятором.
Вложения
Тип файла: zip libxml2.zip (2.18 Мб, 12 просмотров)
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
18.02.2014, 14:22
Цитата Сообщение от dBuSh83 Посмотреть сообщение
Скомпилировал с игнорированием ошибок: нет только libxslt.dll файла. На счет extern "C" - проверял - все есть. Собиралась gcc: раз не g++ - значит, как я понял, Сишным компилятором.
Посмотрел сейчас таблицу экспорта и функции xsltEvalAVT в твоих сборках библиотек не нашел. Может быть версии заголовочных файлов разные? В смысле в студии и в mingw.
0
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99
18.02.2014, 15:48  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Посмотрел сейчас таблицу экспорта и функции xsltEvalAVT в твоих сборках библиотек не нашел.
Не знаю, выносится она или нет, но для других функций она используется.
Цитата Сообщение от DrOffset Посмотреть сообщение
Может быть версии заголовочных файлов разные? В смысле в студии и в mingw.
Не совсем понял, что имеется в виду.
Миниатюры
Компиляция библиотеки libxml под c++  
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
18.02.2014, 17:12
Цитата Сообщение от dBuSh83 Посмотреть сообщение
Не знаю, выносится она или нет, но для других функций она используется.
Я сейчас собрал libxml2 (2.9.0), libxslt и libexslt (1.1.28). Во-первых все собралось без ошибок (mingw 4.7.2, MSYS). Во-вторых я посмотрел таблицу экспорта у получившихся библиотек и функцию xsltEvalAVT там нашел. Значит у тебя один из двух вариантов:
1) Что-то не так пошло в сборке и функция не попала в экспорт (например где-то оказались более старые версии заголовочных файлов libxslt и они подцепились вместо тех, что шли в исходниках).
2) Каким либо образом цепляется другая версия libxslt вместо нужной.
Вложения
Тип файла: rar xmllibs-mingw32-4.7.2.rar (637.5 Кб, 10 просмотров)
1
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99
20.02.2014, 14:14  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Что-то не так пошло в сборке и функция не попала в экспорт (например где-то оказались более старые версии заголовочных файлов libxslt и они подцепились вместо тех, что шли в исходниках).
Исходники с офф сайта брал - не должно быть заголовочников кривых.
Цитата Сообщение от DrOffset Посмотреть сообщение
Каким либо образом цепляется другая версия libxslt вместо нужной.
Вот это уже не знаю.
Цитата Сообщение от DrOffset Посмотреть сообщение
Я сейчас собрал libxml2 (2.9.0), libxslt и libexslt (1.1.28). Во-первых все собралось без ошибок (mingw 4.7.2, MSYS). Во-вторых я посмотрел таблицу экспорта у получившихся библиотек и функцию xsltEvalAVT там нашел.
А как под msys их собирать? Что-то читал по этому поводу, но толком не понял.
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
20.02.2014, 14:37
Цитата Сообщение от dBuSh83 Посмотреть сообщение
Исходники с офф сайта брал - не должно быть заголовочников кривых.
Так не в этом дело. Может уже есть установленная версия где-то и он ее видит, вместо той, которая нужна.
Предположение просто, такое бывает иногда.

Цитата Сообщение от dBuSh83 Посмотреть сообщение
А как под msys их собирать? Что-то читал по этому поводу, но толком не понял.
В домашний каталог пользователя в msys распаковать скачанные архивы (msys/home/username - username - имя юзера в системе).
Запустить msys.
Перейти в первый архив, сделать
./configure --prefix=/usr
mingw32-make
mingw32-make install
В каталоге lib после этого будет лежать собранная библиотека импорта, в bin - dll`ка, в include - заголовочные файлы.
Аналогично со второй библиотекой.
1
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99
20.02.2014, 15:09  [ТС]
Цитата Сообщение от DrOffset Посмотреть сообщение
Так не в этом дело. Может уже есть установленная версия где-то и он ее видит, вместо той, которая нужна.
Предположение просто, такое бывает иногда.
Понял. Поискал, вроде ничего не нашел, но тоже, кто его знает, как она прописана может быть.

И еще вот такой вопрос: для чего *.la файлы, вроде и без них нормально прикручиваются?
0
19495 / 10100 / 2461
Регистрация: 30.01.2014
Сообщений: 17,808
20.02.2014, 15:13
Цитата Сообщение от dBuSh83 Посмотреть сообщение
И еще вот такой вопрос: для чего *.la файлы, вроде и без них нормально прикручиваются?
Да это текстовые файлы. Там прописаны опции для линкера (la - если мне не изменяет склероз - это linker attributes). Можно без них.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.02.2014, 15:13
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru