Статические и динамические библиотеки в одном проекте. (Как сделать?)

Модератор: Модераторы разделов

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20939
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Статические и динамические библиотеки в одном проекте.

Сообщение Bizdelnick »

devilr писал(а):
29.03.2021 19:50
Так показывать нечего.
Bizdelnick писал:
29.03.2021 00:11
pro и лог сборки
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

Bizdelnick писал:
29.03.2021 21:16
pro и лог сборки
Я их уже показывал. Вы же не захотели собрать проект - сами бы увидели. :)
Неактуально это уже всё. Теперь мне нужно будет попробовать libtesseract самостоятельно, чтобы закрыть изначальный проект. Но, это уже другая история...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20939
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Статические и динамические библиотеки в одном проекте.

Сообщение Bizdelnick »

devilr писал(а):
29.03.2021 21:50
Я их уже показывал.
C /MT не видел.
devilr писал(а):
29.03.2021 21:50
Вы же не захотели собрать проект - сами бы увидели.
Я должен был сходить купить винду и студию ради этого? Вы переоцениваете мой альтруизм.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

Bizdelnick писал:
29.03.2021 22:06
Я должен был сходить купить винду и студию ради этого?
Студия уже давно бесплатная (которая 2019), а оффтопик можно качнуть с родного сайта (та хоть с пиратского), поставить в виртуалку, увидеть ошибку и спокойно вздохнуть. И выдохнуть. :)
Даже, если бы начали разбираться - 15 дней бы хватило "за глаза".

Вообще, меня, почему то, особенно в последнее время, стали раздражать некоторые свободные программы. Берёшь одну - в одном каталоге исходники, в другом - инструкция по сборке, в третьем - собранная программа (или библиотека). И всё. Захотел - собираешь сам, не захотел - берёшь готовое. Да, во втором случае, ты можешь стать ССЗБ, но это - твой выбор.
А часто - есть каталог с исходниками и кратенькая инструкция по сборке. Хорошо, если всё соберётся с первого раза...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20939
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Статические и динамические библиотеки в одном проекте.

Сообщение Bizdelnick »

devilr писал(а):
29.03.2021 22:43
Студия уже давно бесплатная (которая 2019), а оффтопик можно качнуть с родного сайта (та хоть с пиратского), поставить в виртуалку, увидеть ошибку и спокойно вздохнуть. И выдохнуть. :)
Даже, если бы начали разбираться - 15 дней бы хватило "за глаза".
Bizdelnick писал:
29.03.2021 22:06
Вы переоцениваете мой альтруизм.
Делать за Вас Вашу работу я готов только за деньги. Большие.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

Bizdelnick писал:
29.03.2021 23:16
Делать за Вас Вашу работу я готов только за деньги. Большие.
Причём здесь это? Иногда проще самому собрать среду и увидеть/решить проблему, чем разводить 100500 страниц на форуме. Тем более, что тут описана проблема, а не желание, чтобы за ТС кто-то что-то сделал.
Я просто описал, как бы я делал (и, часто делаю) в подобных случаях. Для вас этот путь не_интересен/дешёв/жалко_времени - но это ваш путь.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
Bizdelnick
Модератор
Сообщения: 20939
Статус: nulla salus bello
ОС: Debian GNU/Linux

Re: Статические и динамические библиотеки в одном проекте.

Сообщение Bizdelnick »

devilr писал(а):
29.03.2021 23:30
Я просто описал, как бы я делал (и, часто делаю) в подобных случаях.
Ну а я описал, как бы я действовал на Вашем месте: выкладывал максимально подробную информацию, чтобы не заставлять собеседников тратить время на гадание или на самостоятельную сборку. И не разводил вместо этого 100500 страниц на форуме, рассказывая, кто для Вас что должен сделать.
Вот образец, как правильно описывать проблему: https://forum.qt.io/topic/91387/how-do-i-change-the-runtime-library-setting-in-my-project-in-qtcreator
Там есть ещё кое-что интересное, но вряд ли Вы это заметите.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

А вы упорный! :)
Я могу капслоком написать, но я не буду: та библиотека не подключается, похоже, в принципе - ни с вашими волшебными дефайнами, ни без. Другая статическая (в том числе и моя, собственноручно собранная) прекрасно подключается и работает.
Если бы знать, что так будет - надо было сначала собрать свою тестовую библиотеку и убедиться, что она нормально подключается. Но - понадеялся, в результате 3 страницы в теме.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

Под mingw, то я думаю смогу собрать tesseract, а вот как это потом можно прикрутить к VS, я не знаю.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

ormorph писал(а):
30.03.2021 16:58
Под mingw, то я думаю смогу собрать tesseract, а вот как это потом можно прикрутить к VS, я не знаю.
Откуда в теме вообще взялась VS, я не знаю. :) Я "прикручивал" к проекту на Qt, даже простой пример скидывал в тему.
Если удастся нормально его собрать в виде lib (если бы ещё и в виде dll, было бы прекрасно) буду признателен. Ну и h-файл хорошо было бы.
Забрать могу через личку, чтобы не злить модераторов. Да и вряд ли он тут кому понадобится, кроме меня.
P.S. Аааа, вспомнил. Но это касалось только сборки самого tesseract. Я тогда просто не хотел заморачиваться, а взял готовый проект с гитхаба. Как выяснилось позже, напрасно...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

devilr писал(а):
30.03.2021 17:38
Если удастся нормально его собрать в виде lib (если бы ещё и в виде dll, было бы прекрасно) буду признателен.
В том то и дело что получится собрать в виде .a ну и может еще dll.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

ormorph писал(а):
30.03.2021 17:43
В том то и дело что получится собрать в виде .a ну и может еще dll.
А почему ".a"? Тот проект мне прекрасно выдавал lib. MinGW он же для оффтопика может создавать, если склероз не подводит. Какое a в винде?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

devilr писал(а):
30.03.2021 17:52
А почему ".a"? Тот проект мне прекрасно выдавал lib. MinGW он же для оффтопика может создавать, если склероз не подводит.
Конечно Mingw используется для винды, вот только библиотеки использует .a вместо .lib. Т.е. если используется кмпилятор mingw для винды то все будет ок, проект соберется. Ну а если компилятор от M$, то скорее всего нет. Если только не найдётся способ сконвертировать .a в .lib для c++. Т.е. в qtcreator необходимо будет использовать компилятор mingw.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

Я всё равно чего то не догоняю. Вы - собираете библиотеку. Допустим, всё получилось хорошо и вы мне передали lib, dll и h. Какая разница какой у меня будет компилятор/линковщик при присоединении библиотеки? Или вы про свой?
P.S. Кстати, как то давно я ставил и qtcreator и mingw под wine. Exe вполне себе получались и даже запускались под живой виндой. Из под wine проблема была только в отображении самих виджетов- часто оформление очень страдало.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

devilr писал(а):
30.03.2021 18:23
Вы - собираете библиотеку. Допустим, всё получилось хорошо и вы мне передали lib и h. Какая разница какой у меня будет компилятор/линковщик при присоединении библиотеки? Или вы про свой?
Разница в том, что объекты c++ mingw и компилятора от M$ отличаются, по этому не получится. Если бы был просто СИ, то существовала бы вероятность что просто переименовав библиотеку в .lib библиотека подхватится. Но с c++ совсем другая картина. Если сгенерируется еще файл .def, то будет возможность создать .lib, чтобы подхватить .dll.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

ormorph писал(а):
30.03.2021 18:34
просто переименовав библиотеку
А зачем её переименовывать, понять не могу. Почему нельзя просто собрать библиотеку? Если вы собираете под винду, то там либо lib либо dll, либо оба сразу. Откуда вы ".a" берёте?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

devilr писал(а):
30.03.2021 18:38
Если вы собираете под винду, то там либо lib либо dll, либо оба сразу. Откуда вы ".a" берёте?
В mingw, обычно .dll и .a, можно посмотреть тут.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

Ладно, a так a, главное, чтобы собралось и заработало. Только у меня почему то чувство, что у меня будет ещё одна неработающая библиотека. Предчувствие. :)
Мне этот единственный, крохотный проект весь мозг выел. :(
P.S. Кстати, динамический вариант тоже пойдёт, если корректный h-файл будет в комплекте.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

devilr писал(а):
30.03.2021 18:56
Только у меня почему то чувство, что у меня будет ещё одна неработающая библиотека. Предчувствие.
Посмотрим.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

Кстати, если получится (а я на вас надеюсь), попробуйте заодно вызвать одну единственную функцию из получившейся библиотеки:

Код: Выделить всё

    // initilize tesseract OCR engine
    tesseract::TessBaseAPI *myOCR = new tesseract::TessBaseAPI();

    const char *datapath = nullptr;
    const char *language = "rus";
    if (myOCR->Init(datapath, language))
    {

    }
Просто как пример того, что библиотека нормально подключилась и можно вызвать функции.
Не обязательно из Qt, главное, чтобы собралось и запустилось. Просто у меня этот lib получался, почему то, аж в 180+ метров...
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

Вроде собирается вылжил.
Не знаю запустится у вас или нет. Может каких библиотек от компилятора не хватает, но вроде все зависимости выложил. Список библиотек который понадобился для запуска, помимо Qt:

Код: Выделить всё

libgcc_s_sjlj-1.dll
libjpeg-62.dll
liblept-5.dll
libpng16-16.dll
libstdc++-6.dll
libtesseract41.dll
libtiff-5.dll
libwinpthread-1.dll
zlib1.dll
Для сборки необходима только библиотека импорта от tesseract с расширением .a.
Собиралось версией 10.2.0.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

Проверю обязательно. Не факт, что сегодня, но, точно проверю. Спасибо.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

Не дотерпел до завтра - проверил сейчас. Увы и ах. Не работает.
При попытке подключить библиотеку как статическую, будет ошибка

Код: Выделить всё

fatal error LNK1107: недопустимый или поврежденный файл: не удается прочитать по 0x3D0
если попробовать загрузить dll с помощью QLibrary, то вернётся ошибка

Код: Выделить всё

libtesseract41.dll: Unknown error 0x000000c1
Возможно, что я как то не так работаю с библиотеками... а вы сами пробовали их загрузить?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

Конечно запускал под вайном, все работало. Позже попробую эти dll прикрутить на Винде к qtcreator и посмотреть что получится. Но бинарник я даже не сомневаюсь что запустится под виндой.
Ну и думаю могут быть приколы из за модели многопоточности posix, которую требует tesseract.
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

Хм, попробовал собрать в qtcreator под виндой, .a подхватилась нормально. Все собралось без ошибок, только мне не нравится под виндой, что бинарник не показывает, что каких то dll не хватает. Ну и не показывает что не хватает файла rus.traineddata от сюда. Вайн тут показывает более информативный вывод.
Для сборки использовал Qt-5.12, qtcreator и mingw были в комплекте с библиотекой. C оф сайта брал.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

А что имённо вы запускали? Если просто взять сам проект tesseract, что на официальном сайте, то он запустится, не спорю. А мне то надо отдельно библиотеку прикрутить. И, либо её статично прикрутить, либо динамически вызывать через QLibrary.
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

devilr писал(а):
31.03.2021 08:42
А что имённо вы запускали?
Ваш проект, который вы выложили для Qt. Я только прописал библиотеку .a, и все подхватилось. Т.е. у вас была там прописана библиотека .lib, я заменил на мною собранную .a. Если её вообще удалить, то проект не собирается. С оф сайта я брал библиотеку Qt5, в которой присутствует qtcreator и mingw, собственно через которые и собирал. По этому если у вас не собирается, то тут что то не так.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

ormorph писал(а):
31.03.2021 09:57
Ваш проект, который вы выложили для Qt. Я только прописал библиотеку .a, и все подхватилось.
Ну, я после этого много что накручивал. :) Сейчас вспомню/скачаю оригинал и попробую ещё раз.
Добавлено (10:08):
ormorph писал(а):
31.03.2021 09:57
С оф сайта я брал библиотеку Qt5, в которой присутствует qtcreator и mingw, собственно через которые и собирал. По этому если у вас не собирается, то тут что то не так.
Т.е. вы и сам мой проект собирали с mingw?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали:
Аватара пользователя
ormorph
Сообщения: 2854
ОС: Gentoo

Re: Статические и динамические библиотеки в одном проекте.

Сообщение ormorph »

devilr писал(а):
31.03.2021 10:04
Т.е. вы и сам мой проект собирали с mingw?
Само собой. Для винды использовал эту сборку.
Спасибо сказали:
Аватара пользователя
devilr
Сообщения: 3680
ОС: Mandriva => Gentoo (~amd64)

Re: Статические и динамические библиотеки в одном проекте.

Сообщение devilr »

ormorph писал(а):
31.03.2021 10:27
Само собой. Для винды использовал эту сборку.
32 бита?
Мудрость приходит с возрастом.
Иногда возраст приходит один.
Эхо разума
Спасибо сказали: