Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563

Динамические библиотеки в отдельной папке

05.08.2019, 20:48. Показов 3041. Ответов 9

Студворк — интернет-сервис помощи студентам
Добрый день!

Имеется некий проект, использующий библиотеки, допустим, 1dll.a, 2dll.a и 3dll.a, с которыми вместе динамически подключаемые библиотеки 1.dll, 2.dll и 3.dll соответственно. Т.к. приложение компилируется без флага -static, то, естественно, *.dll-файлы мы должны добавить в один каталог с исполняемым файлом. Но появляется вопрос: можно ли заставить приложение искать библиотеки, например, в каталоге libraries, находящимся в одном каталоге с исполняемым файлом?

Заранее спасибо за помощь!

P.S. В качестве IDE использую Code::Blocks.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.08.2019, 20:48
Ответы с готовыми решениями:

Динамические библиотеки
Доброго времени суток, программисты! Я создал эту тему, потому что проблема с запуском своих программ на другом компьютере стоит очень...

Статические и динамические библиотеки
Здравствуйте! Возник вопрос в понимании задания, подскажите пожалуйста То есть в библиотеке должна динамически выделяться память под...

Линковка, статические, динамические библиотеки - матчасть
Парился сегодня целый день, компиля cUrl c MinGW с поддержкой https - т.е. с OpenSSL и zlib. Долго мучался, ив процессе понял, что имею...

9
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
06.08.2019, 09:07
Лучший ответ Сообщение было отмечено BlackStoneBlack как решение

Решение

Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
Но появляется вопрос: можно ли заставить приложение искать библиотеки, например, в каталоге libraries, находящимся в одном каталоге с исполняемым файлом?
Добавь это директорию в переменную PATH, либо используй SetDllDirectory
0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
06.08.2019, 09:19  [ТС]
oleg-m1973, проект планируется кроссплатформенный, поэтому включение в проект windows.h не очень подходит. А PATH - это костыль, который не совсем подходит для распространения приложения на другие машины. Вероятно, банально легче использовать флаг -static для компиляции под каждую платформу.
0
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
06.08.2019, 09:28
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
oleg-m1973, проект планируется кроссплатформенный, поэтому включение в проект windows.h не очень подходит.
Разные системы по-разному ищут библиотеки, поэтому по-любому придётся делать разный код под windows и под линукс. Вообще, это должен делать инсталлятор - помещать библиотеки куда надо и прописывать пути к ним.
В винде проще всего поместить в одну папку с exe, либо указать путь для поиска при помощи SetDllDirectory.
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
А PATH - это костыль, который не совсем подходит для распространения приложения на другие машины.
Да ладно, у тебя на компе половина приложений этот "костыль" использует
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
Вероятно, банально легче использовать флаг -static для компиляции под каждую платформу.
Ну, тут как хочешь. А зачем тогда вообще в dll выносил?
0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
06.08.2019, 09:37  [ТС]
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
половина приложений этот "костыль" использует
Это и прискорбно, на самом деле.
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
по-любому придётся делать разный код под windows и под линукс
Там разница будет лишь в подключаемых библиотеках в бинарном виде.
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
А зачем тогда вообще в dll выносил?
Потому что библиотеки сторонние, написаны не мной.
0
 Аватар для COKPOWEHEU
4083 / 2681 / 432
Регистрация: 09.09.2017
Сообщений: 11,907
06.08.2019, 10:31
Лучший ответ Сообщение было отмечено BlackStoneBlack как решение

Решение

Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
oleg-m1973, проект планируется кроссплатформенный, поэтому включение в проект windows.h не очень подходит.
А включение windows-специфичных библиотек (dll) - подходит?
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
Вероятно, банально легче использовать флаг -static для компиляции под каждую платформу.
Не сработает. Динамические библиотеки невозможно линковать статически.
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
А PATH - это костыль
Может, добавить сами библиотеки в стандартную директорию? Оно, конечно, некрасиво, но все же.
Или подгружать вручную через dlopen / LoadLibrary
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
06.08.2019, 11:48
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
Это и прискорбно, на самом деле.
Разные операционные системы работают по-разному и имеют совершенно разные механизмы обработки событий. Кроссплатформенность Qt говорит только о том, что с её помощью можно один и тот же проект скомпилировать и под одну ОС, и под другую. Но по-факту приложения будут с разным кодом.
0
half-horse half-gateway
117 / 83 / 43
Регистрация: 10.05.2016
Сообщений: 563
07.08.2019, 20:57  [ТС]
Цитата Сообщение от TRam_ Посмотреть сообщение
Но по-факту приложения будут с разным кодом
Ну, это и так очевидно.

Не по теме:

Цитата Сообщение от TRam_ Посмотреть сообщение
Кроссплатформенность Qt
К Qt у меня вообще много вопросов по поводу лицензии. Как я понимаю, лицензия Open Source для Qt не даёт возможности писать проприетарный софт с использованием библиотек Qt. Но это уже совершенно другой вопрос.

0
96 / 82 / 22
Регистрация: 19.10.2013
Сообщений: 485
07.08.2019, 22:12
Цитата Сообщение от BlackStoneBlack Посмотреть сообщение
лицензия Open Source для Qt не даёт возможности писать проприетарный софт с использованием библиотек Qt

Не по теме:

Даёт до тех пор, пока приложенные вами библиотеки Qt будут соответствовать версиям из Open Source. Иными словами, если я получу от вас некий софт только в виде одного исполняемого файла, то я могу докидать к нему библиотеки Qt из официального Open Source дистрибутива и у меня всё должно работать.

Если вы вдруг решите пересобрать Qt или какой-то из его модулей (статически или динамически), так, что нельзя будет использовать ваше ПО без этих пересобранных модулей/библиотек, то тогда вам уже нельзя заниматься распространением такого проприетарного софта.

0
08.08.2019, 10:02  [ТС]

Не по теме:

WxMaper, если оно есть так, как Вы говорите, то это прекрасно.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.08.2019, 10:02
Помогаю со студенческими работами здесь

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

OpenCV CLR статичные и динамические библиотеки в Visual Studio
Доброго времени суток, проблема такая: собрал OpenCV со статичными библиотеками, чтобы иметь возможность запускать на других компьютерах....

Qt в отдельной папке
Qt сконфигурирован с опцией -prefix, установлен по отдельному нестандартному пути, как правильно указать путь при сборке приложений? (все...

Замена html на слэш только в отдельной папке
Просьба подсказать как правильно записать правило в htaccess. Имею www.site.ru/folder/page.html и www.site.ru/folder/page/ - это...

Размещение подключенных библиотек не рядом в exe, а в отдельной папке
Как удобно разместить все dll в папку и ужу оттуда их подключать?


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru