![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
Компактность динамических библиотек18.04.2023, 22:15. Показов 520. Ответов 11
Раскуривал я тут тессеракт. Для распознавания речи, от гугла. Я много не умею по сборкам проектов, всякие makefile, cmake и тд для меня темень, что не есть хорошо. Кое-как какими-то статьями я установил vcpkg и через него скачал этот тессеракт. В vs 2019 подключил значится, а с тессерактом вместе идет лептоника (или что-то такое), с кучей тоже файлов. В проекте я вообще не использовал это, чисто baseapi.h из тессеракта, соответственно под него длл, но когда я запустил - вска затребовала у себя в папке иметь не просто длл тессеракта и языковой файл - а и все эти не нужные мне файлы, штук эдак 12. В распознавание речи я помещаю картинку через opencv, его формат Mat. Может как-то я не так подключил? Когда я прописывал пути к инклудам и длл - там были как раз помимо тессеракта и остальные - может потому и требует их вс рядом с экзешником таскать? Можно как-то это скомпоновать убрав неиспользуемое? Или хотя бы скомпоновать в кучку. Да хотя бы что б длл лежали не рядом с экзе, а в папке рядом с ним, таскать проще из проекта в проект будет..
0
|
18.04.2023, 22:15 | |
Ответы с готовыми решениями:
11
Зависимость от динамических библиотек Разработка динамических библиотек Создание динамических библиотек DLL С++ |
19411 / 10030 / 2443
Регистрация: 30.01.2014
Сообщений: 17,697
|
|
18.04.2023, 22:21 | |
Laborant666, у вас на скриншоте одни h-файлы. А вы речь ведете про библиотеки. Показывайте тогда уж библиотеки.
А вообще множество зависимостей - это вариант нормы, так что скорее всего вы все правильно установили. Если хотите что-то повыкидывать (что далеко не всегда возможно, но вероятно), собирать библиотеку надо вручную, со своей конфигурацией. Положить в папку рядом с exe - можно, вот тут читайте: https://learn.microsoft.com/en... directorya
1
|
![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.04.2023, 22:31 [ТС] | |
Хотя бы так, спасибо
Добавлено через 2 минуты Так установил vcpkg по команде install tesseract:64-windows (что-то такое). Когда гуглил о тессеракте я натыкался что мол ему нужно кормить только через лептонику изображения, туда-сюда, сразу понял что это ставить тупо лептонику ради её формата данных, ну такое. Попробовал использовать opencv - нормально всё принимает Добавлено через 2 минуты Вот это было бы хорошо. Можете объяснить что для этого конкретно нужно и хотя бы пару ссылок на примеры, как какую-нибудь библиотеку собирали частично. От opencv я бы тоже отрезал часть с удовольствием, таскать дллку весом 60мб рядом с экзешником весом 37кб - ну такое)))
0
|
19411 / 10030 / 2443
Регистрация: 30.01.2014
Сообщений: 17,697
|
|
18.04.2023, 22:35 | |
А чем они вам мешают? Их не надо вместе с exe таскать.
Если они и правда все включатся в зависимости, то скорее всего вам поможет только ручная пересборка. Там наверняка при configure можно поотключать ненужные форматы изображений например, и т.д. А тут как бы на все случаи жизни включено по максимуму, чтобы было удобнее разрабатывать приложение. Для деплоя потом свою версию соберете и всего делов.
0
|
![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.04.2023, 22:41 [ТС] | |
Это понятно. Я думал что если не подключаешь хедер лептоники - то лептоника не будет требоваться, пусть и путь к ней, к инклудам в свойствах прописан. Неиспользуемое не компилируется, так мне говорили. И в подключении этого всего добра - тоже не подключались либы, кроме opencv и тессеракта. Думал тоже это работает, что не будет требоваться и я весь такой хитрый откинул часть этой сборки с кучей зависимостей
0
|
19411 / 10030 / 2443
Регистрация: 30.01.2014
Сообщений: 17,697
|
|
18.04.2023, 22:48 | |
Опыт
![]() Конкретно объяснить могу, но это долго будет, я не готов пока столько времени тратить с непонятным результатом. Инструкции в интернете обычно рассчитаны на пошаговое выполнение, что полностью отключает мозг исполнителя. А понимание того, что происходит в процессе - это почти обязательное условие для успеха. Для набития руки посоветую проект Linux From Scratch. Когда соберете свой rootfs, ядро, X-ы и т.д., а потом если это все еще и запустится, то вам уже ничего не будет страшно. В общем же процесс заключается в настройке окружения для сборки, затем внимательного чтения всех readme, howto и т.д., которые лежат в пакетах с исходниками. Там обычно пишут какие зависимости обязательные, а какие нет, что в целом нужно для сборки. Дальше изучаете систему сборки, и какие есть способы ее настройки (тут все идет в дело, оф. сайты и доки, readme, в запущеных случаях придется по исходникам полазить). Например, если это automake configure, то полезно по ключу --help посмотреть доступные опции. Когда все это поняли, настроили - можно приступать. Ваш случай похоже не такой уж и простой для сборки, учитывая, сколько у него зависимостей, поэтому лучше вам сначала потренироваться на чем-то попроще. Соберите вот zlib себе отдельно, или libcurl.
1
|
19411 / 10030 / 2443
Регистрация: 30.01.2014
Сообщений: 17,697
|
|
18.04.2023, 22:50 | |
Это вы напрасно так думаете. header и библиотека - это вещи ортогональные, а зависимости определяются на этапе сборки соответствующей библиотеки. Если оно так собрано, что зависимость нужна, то никуда вы от нее не денетесь.
0
|
![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.04.2023, 22:52 [ТС] | |
Это всё дело собирается некоторым софтом из некоторых файлов? Полагаю из source code на гитхабе? Не раз видел что там напрямую неприменимый код в этих исходниках. Если так, то хотя бы понятно куда начинать копаться с этими сборками
Добавлено через 1 минуту Логика была железная - я полазил по хедерам, глянул что они ничего не подключают вне папки тессеракта (вроде) и подумал - ну значит выдерну..
0
|
19411 / 10030 / 2443
Регистрация: 30.01.2014
Сообщений: 17,697
|
|
18.04.2023, 23:06 | |
Да.
Не всегда. Начинать надо с оф. сайтов. Дальше если оттуда придете на гитхаб, то ладно, если нет, то нет ![]() Напрямую, в смысле в вашем коде? Ну конечно. Это ж исходники библиотеки. Если это не header-only, то ее всегда нужно сперва собрать, прежде чем к себе подключать.
1
|
18.04.2023, 23:06 | ||||||
Помогаю со студенческими работами здесь
12
Как указать директорию для динамических библиотек Быстродействие программы при использовании статических и динамических библиотек
Поиск и использование динамических библиотек Использование Qt динамических библиотек в обычном проекте C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Async/await в Swift: Асинхронное программирование в iOS
mobDevWorks 20.03.2025
Асинхронное программирование долго было одной из самых сложных задач для разработчиков iOS. В течение многих лет мы сражались с замыканиями, диспетчеризацией очередей и обратными вызовами, чтобы. . .
|
Сложность Колмогорова: Приёмы упрощения кода
ArchitectMsa 20.03.2025
Наверное, каждый программист хотя бы раз сталкивался с кодом, который напоминает запутанный лабиринт — чем дальше в него погружаешься, тем сложнее найти выход. И когда мы говорим о сложности кода, мы. . .
|
PostgreSQL в Kubernetes: Подготовка кластера и настройка
Mr. Docker 20.03.2025
Когда доходит до контейнеризации баз данных и особенно таких требовательных к ресурсам системах как PostgreSQL, многие команды до сих пор колеблются, прежде чем перенести их в контейнерную. . .
|
C++26: Индексирование пакетов и метапрограммирование
bytestream 20.03.2025
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими. . .
|
Состояние гонки в C#: подводные камни многопоточного программирования
UnmanagedCoder 20.03.2025
Что такое состояние гонки? Это ситуация, когда результат программы непредсказуемо меняется в зависимости от порядка выполнения потоков. Проще говоря, два или более потока пытаются одновременно. . .
|
Next.js для разработки React: преимущества серверного рендеринга
Reangularity 20.03.2025
Next. js решает классическую проблему React-приложений: медленную первоначальную загрузку и плохую индексацию поисковиками. Вместо того чтобы заставлять браузер пользователя выполнять всю работу по. . .
|
JUnit или TestNG: Выбираем Java-фреймворк для тестирования
Javaican 20.03.2025
История тестовых фреймворков в Java началась в конце 90-х, когда Кент Бек и Эрих Гамма разработали JUnit - инструмент, который перевернул представление разработчиков о модульном тестировании. JUnit. . .
|
Разбиваем монолит на два микросервиса и реализуем CI/CD
ArchitectMsa 20.03.2025
Когда команда растет, а функциональность монолита расширяется, поддерживать и развивать такую систему становится все труднее. Разработчики начинают тратить много времени на разбор сложных. . .
|
Python и PDF: Создание и редактирование файлов
py-thonny 20.03.2025
Работа с PDF-документами – одна из популярных задач в современной разработке. Python предлагает несколько инструментов для создания, чтения и редактирования PDF-файлов, среди которых особенно. . .
|
Корутины в Unity и производительность WaitForSeconds
GameUnited 20.03.2025
Разработчики игр на Unity часто сталкиваются с вопросом: как выполнять действия через определённые промежутки времени, не блокируя основной поток игры? Тут как раз и приходят на помощь корутины —. . .
|