Статические и динамические библиотеки в одном проекте. (Как сделать?)
Модератор: Модераторы разделов
-
- Модератор
- Сообщения: 20939
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Статические и динамические библиотеки в одном проекте.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Я их уже показывал. Вы же не захотели собрать проект - сами бы увидели.
Неактуально это уже всё. Теперь мне нужно будет попробовать libtesseract самостоятельно, чтобы закрыть изначальный проект. Но, это уже другая история...
-
- Модератор
- Сообщения: 20939
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Статические и динамические библиотеки в одном проекте.
C /MT не видел.
Я должен был сходить купить винду и студию ради этого? Вы переоцениваете мой альтруизм.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Студия уже давно бесплатная (которая 2019), а оффтопик можно качнуть с родного сайта (та хоть с пиратского), поставить в виртуалку, увидеть ошибку и спокойно вздохнуть. И выдохнуть.
Даже, если бы начали разбираться - 15 дней бы хватило "за глаза".
Вообще, меня, почему то, особенно в последнее время, стали раздражать некоторые свободные программы. Берёшь одну - в одном каталоге исходники, в другом - инструкция по сборке, в третьем - собранная программа (или библиотека). И всё. Захотел - собираешь сам, не захотел - берёшь готовое. Да, во втором случае, ты можешь стать ССЗБ, но это - твой выбор.
А часто - есть каталог с исходниками и кратенькая инструкция по сборке. Хорошо, если всё соберётся с первого раза...
-
- Модератор
- Сообщения: 20939
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Статические и динамические библиотеки в одном проекте.
Делать за Вас Вашу работу я готов только за деньги. Большие.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Причём здесь это? Иногда проще самому собрать среду и увидеть/решить проблему, чем разводить 100500 страниц на форуме. Тем более, что тут описана проблема, а не желание, чтобы за ТС кто-то что-то сделал.
Я просто описал, как бы я делал (и, часто делаю) в подобных случаях. Для вас этот путь не_интересен/дешёв/жалко_времени - но это ваш путь.
-
- Модератор
- Сообщения: 20939
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: Статические и динамические библиотеки в одном проекте.
Ну а я описал, как бы я действовал на Вашем месте: выкладывал максимально подробную информацию, чтобы не заставлять собеседников тратить время на гадание или на самостоятельную сборку. И не разводил вместо этого 100500 страниц на форуме, рассказывая, кто для Вас что должен сделать.
Вот образец, как правильно описывать проблему: https://forum.qt.io/topic/91387/how-do-i-change-the-runtime-library-setting-in-my-project-in-qtcreator
Там есть ещё кое-что интересное, но вряд ли Вы это заметите.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
А вы упорный!
Я могу капслоком написать, но я не буду: та библиотека не подключается, похоже, в принципе - ни с вашими волшебными дефайнами, ни без. Другая статическая (в том числе и моя, собственноручно собранная) прекрасно подключается и работает.
Если бы знать, что так будет - надо было сначала собрать свою тестовую библиотеку и убедиться, что она нормально подключается. Но - понадеялся, в результате 3 страницы в теме.
Я могу капслоком написать, но я не буду: та библиотека не подключается, похоже, в принципе - ни с вашими волшебными дефайнами, ни без. Другая статическая (в том числе и моя, собственноручно собранная) прекрасно подключается и работает.
Если бы знать, что так будет - надо было сначала собрать свою тестовую библиотеку и убедиться, что она нормально подключается. Но - понадеялся, в результате 3 страницы в теме.
-
- Сообщения: 2854
- ОС: Gentoo
Re: Статические и динамические библиотеки в одном проекте.
Под mingw, то я думаю смогу собрать tesseract, а вот как это потом можно прикрутить к VS, я не знаю.
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Откуда в теме вообще взялась VS, я не знаю. Я "прикручивал" к проекту на Qt, даже простой пример скидывал в тему.
Если удастся нормально его собрать в виде lib (если бы ещё и в виде dll, было бы прекрасно) буду признателен. Ну и h-файл хорошо было бы.
Забрать могу через личку, чтобы не злить модераторов. Да и вряд ли он тут кому понадобится, кроме меня.
P.S. Аааа, вспомнил. Но это касалось только сборки самого tesseract. Я тогда просто не хотел заморачиваться, а взял готовый проект с гитхаба. Как выяснилось позже, напрасно...
-
- Сообщения: 2854
- ОС: Gentoo
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
А почему ".a"? Тот проект мне прекрасно выдавал lib. MinGW он же для оффтопика может создавать, если склероз не подводит. Какое a в винде?
-
- Сообщения: 2854
- ОС: Gentoo
Re: Статические и динамические библиотеки в одном проекте.
Конечно Mingw используется для винды, вот только библиотеки использует .a вместо .lib. Т.е. если используется кмпилятор mingw для винды то все будет ок, проект соберется. Ну а если компилятор от M$, то скорее всего нет. Если только не найдётся способ сконвертировать .a в .lib для c++. Т.е. в qtcreator необходимо будет использовать компилятор mingw.
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Я всё равно чего то не догоняю. Вы - собираете библиотеку. Допустим, всё получилось хорошо и вы мне передали lib, dll и h. Какая разница какой у меня будет компилятор/линковщик при присоединении библиотеки? Или вы про свой?
P.S. Кстати, как то давно я ставил и qtcreator и mingw под wine. Exe вполне себе получались и даже запускались под живой виндой. Из под wine проблема была только в отображении самих виджетов- часто оформление очень страдало.
P.S. Кстати, как то давно я ставил и qtcreator и mingw под wine. Exe вполне себе получались и даже запускались под живой виндой. Из под wine проблема была только в отображении самих виджетов- часто оформление очень страдало.
-
- Сообщения: 2854
- ОС: Gentoo
Re: Статические и динамические библиотеки в одном проекте.
Разница в том, что объекты c++ mingw и компилятора от M$ отличаются, по этому не получится. Если бы был просто СИ, то существовала бы вероятность что просто переименовав библиотеку в .lib библиотека подхватится. Но с c++ совсем другая картина. Если сгенерируется еще файл .def, то будет возможность создать .lib, чтобы подхватить .dll.
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
А зачем её переименовывать, понять не могу. Почему нельзя просто собрать библиотеку? Если вы собираете под винду, то там либо lib либо dll, либо оба сразу. Откуда вы ".a" берёте?
-
- Сообщения: 2854
- ОС: Gentoo
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Ладно, a так a, главное, чтобы собралось и заработало. Только у меня почему то чувство, что у меня будет ещё одна неработающая библиотека. Предчувствие.
Мне этот единственный, крохотный проект весь мозг выел.
P.S. Кстати, динамический вариант тоже пойдёт, если корректный h-файл будет в комплекте.
Мне этот единственный, крохотный проект весь мозг выел.
P.S. Кстати, динамический вариант тоже пойдёт, если корректный h-файл будет в комплекте.
-
- Сообщения: 2854
- ОС: Gentoo
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Кстати, если получится (а я на вас надеюсь), попробуйте заодно вызвать одну единственную функцию из получившейся библиотеки:
Просто как пример того, что библиотека нормально подключилась и можно вызвать функции.
Не обязательно из Qt, главное, чтобы собралось и запустилось. Просто у меня этот lib получался, почему то, аж в 180+ метров...
Код: Выделить всё
// 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+ метров...
-
- Сообщения: 2854
- ОС: Gentoo
Re: Статические и динамические библиотеки в одном проекте.
Вроде собирается вылжил.
Не знаю запустится у вас или нет. Может каких библиотек от компилятора не хватает, но вроде все зависимости выложил. Список библиотек который понадобился для запуска, помимо Qt:
Для сборки необходима только библиотека импорта от tesseract с расширением .a.
Собиралось версией 10.2.0.
Не знаю запустится у вас или нет. Может каких библиотек от компилятора не хватает, но вроде все зависимости выложил. Список библиотек который понадобился для запуска, помимо 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
Собиралось версией 10.2.0.
Спасибо сказали:
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Проверю обязательно. Не факт, что сегодня, но, точно проверю. Спасибо.
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Не дотерпел до завтра - проверил сейчас. Увы и ах. Не работает.
При попытке подключить библиотеку как статическую, будет ошибка
если попробовать загрузить dll с помощью QLibrary, то вернётся ошибка
Возможно, что я как то не так работаю с библиотеками... а вы сами пробовали их загрузить?
При попытке подключить библиотеку как статическую, будет ошибка
Код: Выделить всё
fatal error LNK1107: недопустимый или поврежденный файл: не удается прочитать по 0x3D0
Код: Выделить всё
libtesseract41.dll: Unknown error 0x000000c1
-
- Сообщения: 2854
- ОС: Gentoo
Re: Статические и динамические библиотеки в одном проекте.
Конечно запускал под вайном, все работало. Позже попробую эти dll прикрутить на Винде к qtcreator и посмотреть что получится. Но бинарник я даже не сомневаюсь что запустится под виндой.
Ну и думаю могут быть приколы из за модели многопоточности posix, которую требует tesseract.
Ну и думаю могут быть приколы из за модели многопоточности posix, которую требует tesseract.
-
- Сообщения: 2854
- ОС: Gentoo
Re: Статические и динамические библиотеки в одном проекте.
Хм, попробовал собрать в qtcreator под виндой, .a подхватилась нормально. Все собралось без ошибок, только мне не нравится под виндой, что бинарник не показывает, что каких то dll не хватает. Ну и не показывает что не хватает файла rus.traineddata от сюда. Вайн тут показывает более информативный вывод.
Для сборки использовал Qt-5.12, qtcreator и mingw были в комплекте с библиотекой. C оф сайта брал.
Для сборки использовал Qt-5.12, qtcreator и mingw были в комплекте с библиотекой. C оф сайта брал.
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
А что имённо вы запускали? Если просто взять сам проект tesseract, что на официальном сайте, то он запустится, не спорю. А мне то надо отдельно библиотеку прикрутить. И, либо её статично прикрутить, либо динамически вызывать через QLibrary.
-
- Сообщения: 2854
- ОС: Gentoo
Re: Статические и динамические библиотеки в одном проекте.
Ваш проект, который вы выложили для Qt. Я только прописал библиотеку .a, и все подхватилось. Т.е. у вас была там прописана библиотека .lib, я заменил на мною собранную .a. Если её вообще удалить, то проект не собирается. С оф сайта я брал библиотеку Qt5, в которой присутствует qtcreator и mingw, собственно через которые и собирал. По этому если у вас не собирается, то тут что то не так.
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)
Re: Статические и динамические библиотеки в одном проекте.
Ну, я после этого много что накручивал. Сейчас вспомню/скачаю оригинал и попробую ещё раз.
Добавлено (10:08):
Т.е. вы и сам мой проект собирали с mingw?
-
- Сообщения: 2854
- ОС: Gentoo
-
- Сообщения: 3680
- ОС: Mandriva => Gentoo (~amd64)