![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
1 | |
Компактность динамических библиотек18.04.2023, 22:15. Показов 514. Ответов 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,695
|
|
18.04.2023, 22:21 | 2 |
Laborant666, у вас на скриншоте одни h-файлы. А вы речь ведете про библиотеки. Показывайте тогда уж библиотеки.
А вообще множество зависимостей - это вариант нормы, так что скорее всего вы все правильно установили. Если хотите что-то повыкидывать (что далеко не всегда возможно, но вероятно), собирать библиотеку надо вручную, со своей конфигурацией. Положить в папку рядом с exe - можно, вот тут читайте: https://learn.microsoft.com/en... directorya
1
|
![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.04.2023, 22:24 [ТС] | 3 |
Это я к тому, что в папке куча всего ненужного. Я не подключал хедеры эти, подключал только baseapi.h из тессеракта. Папка с дллками вот. С либами вот
0
|
![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.04.2023, 22:25 [ТС] | 4 |
Дллки*
0
|
![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.04.2023, 22:31 [ТС] | 5 |
Хотя бы так, спасибо
Добавлено через 2 минуты Так установил vcpkg по команде install tesseract:64-windows (что-то такое). Когда гуглил о тессеракте я натыкался что мол ему нужно кормить только через лептонику изображения, туда-сюда, сразу понял что это ставить тупо лептонику ради её формата данных, ну такое. Попробовал использовать opencv - нормально всё принимает Добавлено через 2 минуты Вот это было бы хорошо. Можете объяснить что для этого конкретно нужно и хотя бы пару ссылок на примеры, как какую-нибудь библиотеку собирали частично. От opencv я бы тоже отрезал часть с удовольствием, таскать дллку весом 60мб рядом с экзешником весом 37кб - ну такое)))
0
|
19411 / 10030 / 2443
Регистрация: 30.01.2014
Сообщений: 17,695
|
|
18.04.2023, 22:35 | 6 |
А чем они вам мешают? Их не надо вместе с exe таскать.
Если они и правда все включатся в зависимости, то скорее всего вам поможет только ручная пересборка. Там наверняка при configure можно поотключать ненужные форматы изображений например, и т.д. А тут как бы на все случаи жизни включено по максимуму, чтобы было удобнее разрабатывать приложение. Для деплоя потом свою версию соберете и всего делов.
0
|
![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.04.2023, 22:41 [ТС] | 7 |
Это понятно. Я думал что если не подключаешь хедер лептоники - то лептоника не будет требоваться, пусть и путь к ней, к инклудам в свойствах прописан. Неиспользуемое не компилируется, так мне говорили. И в подключении этого всего добра - тоже не подключались либы, кроме opencv и тессеракта. Думал тоже это работает, что не будет требоваться и я весь такой хитрый откинул часть этой сборки с кучей зависимостей
0
|
19411 / 10030 / 2443
Регистрация: 30.01.2014
Сообщений: 17,695
|
|
18.04.2023, 22:48 | 8 |
Опыт
![]() Конкретно объяснить могу, но это долго будет, я не готов пока столько времени тратить с непонятным результатом. Инструкции в интернете обычно рассчитаны на пошаговое выполнение, что полностью отключает мозг исполнителя. А понимание того, что происходит в процессе - это почти обязательное условие для успеха. Для набития руки посоветую проект Linux From Scratch. Когда соберете свой rootfs, ядро, X-ы и т.д., а потом если это все еще и запустится, то вам уже ничего не будет страшно. В общем же процесс заключается в настройке окружения для сборки, затем внимательного чтения всех readme, howto и т.д., которые лежат в пакетах с исходниками. Там обычно пишут какие зависимости обязательные, а какие нет, что в целом нужно для сборки. Дальше изучаете систему сборки, и какие есть способы ее настройки (тут все идет в дело, оф. сайты и доки, readme, в запущеных случаях придется по исходникам полазить). Например, если это automake configure, то полезно по ключу --help посмотреть доступные опции. Когда все это поняли, настроили - можно приступать. Ваш случай похоже не такой уж и простой для сборки, учитывая, сколько у него зависимостей, поэтому лучше вам сначала потренироваться на чем-то попроще. Соберите вот zlib себе отдельно, или libcurl.
1
|
![]() 3795 / 2720 / 766
Регистрация: 29.06.2020
Сообщений: 9,999
|
|
18.04.2023, 22:50 | 9 |
А вы не предполагали что baseapi.h может использовать любое количество тех модулей ?
Добавлено через 2 минуты с openssl и сертификатами )
0
|
19411 / 10030 / 2443
Регистрация: 30.01.2014
Сообщений: 17,695
|
|
18.04.2023, 22:50 | 10 |
Это вы напрасно так думаете. header и библиотека - это вещи ортогональные, а зависимости определяются на этапе сборки соответствующей библиотеки. Если оно так собрано, что зависимость нужна, то никуда вы от нее не денетесь.
0
|
![]() 208 / 101 / 20
Регистрация: 30.06.2020
Сообщений: 848
|
|
18.04.2023, 22:52 [ТС] | 11 |
Это всё дело собирается некоторым софтом из некоторых файлов? Полагаю из source code на гитхабе? Не раз видел что там напрямую неприменимый код в этих исходниках. Если так, то хотя бы понятно куда начинать копаться с этими сборками
Добавлено через 1 минуту Логика была железная - я полазил по хедерам, глянул что они ничего не подключают вне папки тессеракта (вроде) и подумал - ну значит выдерну..
0
|
19411 / 10030 / 2443
Регистрация: 30.01.2014
Сообщений: 17,695
|
|
18.04.2023, 23:06 | 12 |
Да.
Не всегда. Начинать надо с оф. сайтов. Дальше если оттуда придете на гитхаб, то ладно, если нет, то нет ![]() Напрямую, в смысле в вашем коде? Ну конечно. Это ж исходники библиотеки. Если это не header-only, то ее всегда нужно сперва собрать, прежде чем к себе подключать.
1
|
18.04.2023, 23:06 | ||||||
Помогаю со студенческими работами здесь
12
Как указать директорию для динамических библиотек Быстродействие программы при использовании статических и динамических библиотек
Поиск и использование динамических библиотек Использование Qt динамических библиотек в обычном проекте C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Циклы for в Python
py-thonny 17.03.2025
Существует множество ситуаций, когда нам нужно выполнить одно и то же действие несколько раз. Цикл for в Python — настоящий рабочий конь для большинства программистов. Если вам нужно пройтись по всем. . .
|
Предсказание ветвлений - путь к высокопроизводительному C++
NullReferenced 17.03.2025
В высокопроизводительном программировании на C++ каждый такт процессора на счету. Когда речь заходит о разработке систем с низкой задержкой — будь то высокочастотная торговля, обработка потоковых. . .
|
Паттерн CQRS в C#
UnmanagedCoder 17.03.2025
Создание сложных корпоративных приложений часто требует нестандартных подходов к архитектуре. Один из таких подходов — паттерн CQRS (Command Query Responsibility Segregation), предлагающий простую,. . .
|
Паттерн Цепочка ответственности в C#
UnmanagedCoder 17.03.2025
Цепочка ответственности — это поведенческий паттерн проектирования, который позволяет передавать запросы последовательно по цепочке потенциальных обработчиков, пока один из них не обработает запрос. . . .
|
Создаем микросервисы с NestJS, TCP и Typescript
run.dev 17.03.2025
NestJS — фреймворк, который значительно упрощает создание серверных приложений на Node. js. Его прелесть в том, что он комбинирует концепции ООП, функционального программирования и предлагает. . .
|
Гексагональная архитектура со Spring Boot
Javaican 17.03.2025
Если вы когда-нибудь сталкивались с ситуацией, когда внесение простых изменений в базу данных или пользовательский интерфейс заставляло вас переписывать весь код, то вы точно оцените элегантность. . .
|
Позиционирование Kafka Consumer и Seek-операции
Javaican 17.03.2025
Что же такое Consumer Seek в Kafka? По сути, это API-метод, который позволяет программно указать, с какой позиции (offset) Consumer должен начать или продолжить чтение данных из партиции. Без этого. . .
|
Python NumPy: Лучшие практики и примеры
py-thonny 17.03.2025
NumPy (Numerical Python) — одна из ключевых библиотек для научных вычислений в Python. Она превращает Python из просто удобного языка общего назначения в среду для проведения сложных математических. . .
|
Java Micronaut в Docker: контейнеризация с Maven и Jib
Javaican 16.03.2025
Когда речь заходит о микросервисной архитектуре на Java, фреймворк Micronaut выделяется среди конкурентов. Он создан с учётом особенностей облачных сред и контейнеров, что делает его идеальным. . .
|
Управление зависимостями в Java: Сравнение Spring, Guice и Dagger 2
Javaican 16.03.2025
Инъекция зависимостей (Dependency Injection, DI) — один из фундаментальных паттернов проектирования, который радикально меняет подход к созданию гибких и тестируемых Java-приложений. Суть этого. . .
|