Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.75
dBuSh83
5 / 5 / 1
Регистрация: 10.07.2013
Сообщений: 99
#1

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

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

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

Прошу помощи, в чем может быть проблема?
http://www.cyberforum.ru/cpp-beginners/thread877492.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 11:24
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Компиляция библиотеки libxml под c++ (C++):

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

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

Компиляция под 32 битный процессор
В общем название темы говорит само за себя. У меня стоит Win 7 64x разрядная и...

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

Компиляция проекта под linux из windows
Скорее всего раздел не подходит, просто не знаю к какому это относится...

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

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

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

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

И еще вот такой вопрос: для чего *.la файлы, вроде и без них нормально прикручиваются?
0
DrOffset
7517 / 4513 / 1097
Регистрация: 30.01.2014
Сообщений: 7,362
20.02.2014, 15:13 #20
Цитата Сообщение от dBuSh83 Посмотреть сообщение
И еще вот такой вопрос: для чего *.la файлы, вроде и без них нормально прикручиваются?
Да это текстовые файлы. Там прописаны опции для линкера (la - если мне не изменяет склероз - это linker attributes). Можно без них.
1
20.02.2014, 15:13
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.02.2014, 15:13
Привет! Вот еще темы с решениями:

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

Компиляция кода под конкретную ОС
Есть ОС Windows, Linux, Android. Хочу понять базовые знание по тому как...

Компиляция простейшего кода на C++ под GNU/Linux
Проблема в компиляции простейшего кода на c++ под Linux: void hello(){ ...

Компиляция кода с SDL2 под Windows в MinGW
У меня виндовс семь, система 64битная. Компилятор брал сравнительно недавно...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

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