Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
1

Как указать директорию для динамических библиотек

17.04.2014, 18:31. Просмотров 1596. Ответов 41
Метки нет (Все метки)

Проблема в том, что заюзав кучу динамических библиотек, 20 файлов лежат у меня в директории выходной программы. Хотелось бы их в папочку bin запихнуть, да прога жалуется - найти не может. Настройки проекта смотрел, ничего дельного не нашёл. Не подскажите, что делать?
P.S. надеюсь, исходник не надо...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.04.2014, 18:31
Ответы с готовыми решениями:

Как компилятору указать директорию заголовочных файлов.
Мне надо на Visual Studio 2010 Ultimate. Нужно указать директорию заголовочных...

Как лучше копировать память, обмениваться указателями и т.д. при работе с кучей динамических библиотек (DLL) ?
Привет! Вот есть много DLL-к, каждая работает со своей внутренней динамической...

Указать директорию
Здравствуйте. Пишу программу в борланде 6, в которой надо указать путь, из...

Зависимость от динамических библиотек
Как определить от каких дин. библиотек зависит приложение, в Linux ldd в...

Разработка динамических библиотек
Какая есть литература по разработке dll на русском/английском (язык не важен)...

41
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
17.04.2014, 22:02 2
Ты в чём вообще работаешь? Что за папка bin?
0
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
17.04.2014, 22:13  [ТС] 3
В Visual Studio, папка bin - папка в директории моей программы, где надо искать библиотеки.
0
zss
Модератор
Эксперт С++
7237 / 6692 / 4234
Регистрация: 18.12.2011
Сообщений: 17,653
Завершенные тесты: 1
17.04.2014, 22:21 4
Такие dll надо зарегистрировать из командной строки
>regsvr32 c:\bin\mydll.dll
0
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
17.04.2014, 22:31  [ТС] 5
А если я скину другому человеку программу, ему тоже надо будет регистрировать? Нет, так не пойдёт. Должен быть другой способ...
0
zss
Модератор
Эксперт С++
7237 / 6692 / 4234
Регистрация: 18.12.2011
Сообщений: 17,653
Завершенные тесты: 1
17.04.2014, 22:33 6
Цитата Сообщение от WinRar007 Посмотреть сообщение
Должен быть другой способ...
Есть - закинуть их в папку c:\windows\system32\
0
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
17.04.2014, 23:03  [ТС] 7
Блин, мне нужно, чтоб все dll были в папке bin в директории моей программы (MyProg/bin/example.dll)

Добавлено через 21 секунду
И их прекрасно находила сама программа.

Добавлено через 1 минуту
Как указать директорию для динамических библиотек


Как указать директорию для динамических библиотек

Пример.

Добавлено через 1 минуту
Просто прога ищет только в её директории, а в под-директориях - нет.
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
17.04.2014, 23:13 8
Так и задумано. Либо в своей, либо в системной.
0
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
17.04.2014, 23:14  [ТС] 9
Блин, ну на скрине же лежит! Сто раз видел!
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
17.04.2014, 23:17 10
Ну может при установке выполняется этот regsvr32, хотя я так не пробовал.
Или применяется динамическая загрузка библиотек через LoadLibrary, там можно путь любой указывать.
0
Убежденный
Ушел с форума
Эксперт С++
15998 / 7269 / 1180
Регистрация: 02.05.2013
Сообщений: 11,637
Записей в блоге: 1
Завершенные тесты: 1
18.04.2014, 00:33 11
Цитата Сообщение от WinRar007 Посмотреть сообщение
А если я скину другому человеку программу, ему тоже надо будет регистрировать? Нет, так не пойдёт. Должен быть другой способ.
Такой способ есть, называется delay loading:

Linker Support for Delay-Loaded DLLs
http://msdn.microsoft.com/en-us/library/151kt790%28v=vs.90%29.aspx

Настроить папки для поиска dll поможет функция

SetDllDirectory function
http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx
1
stima
495 / 345 / 93
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
18.04.2014, 01:54 12
Создайте промежуточный bat файл:
C++
1
2
3
@echo off
SET PATH=%PATH%;%cd%\bin
start myprogram.exe
п.с.
0
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 08:10  [ТС] 13
Да? Можно по подробней? Просто, даже когда винду сменил, Spore на скрине и без переустановки запускалась.

Добавлено через 15 минут
Не совсем понятно, как именно назначить путь.

Добавлено через 10 минут
Разобрался, но всё равно не видит.
0
Миниатюры
Как указать директорию для динамических библиотек   Как указать директорию для динамических библиотек   Как указать директорию для динамических библиотек  

nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
18.04.2014, 08:12 14
SetDllDirectory влияет только на динамическую загрузку DLL через LoadLibrary. Если привязка статическая, то это бесполезно.

Да и путь ты неправильно указываешь, надо либо полный, либо относительно текущей: ".\\bin\\"

Dll статически привязаны?
0
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 13:07  [ТС] 15
Извините, но я не знаю, как определить. Да, я профан.

Добавлено через 45 секунд
Просто можете написать нужный код, а я его Ctrl+C, Ctrl+V?
0
iRomul
159 / 100 / 14
Регистрация: 17.10.2012
Сообщений: 483
Завершенные тесты: 1
18.04.2014, 17:47 16
WinRar007, почему бы не расположить саму запускаемую программу в папку bin, где ей и место, а уже остальные ресурсы по другим папкам?
0
WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 19:18  [ТС] 17
Прога не будет видеть локальные пути к каталогам "снаружи" bin.
0
nmcf
6274 / 5577 / 2537
Регистрация: 14.04.2014
Сообщений: 23,468
18.04.2014, 19:22 18
А для чего ей их видеть? Пути в программе можешь переделать через ".."
0
stima
495 / 345 / 93
Регистрация: 22.03.2011
Сообщений: 1,107
Завершенные тесты: 2
18.04.2014, 19:22 19
...

Цитата Сообщение от stima Посмотреть сообщение
Создайте промежуточный bat файл:
C++
1
2
3
@echo off
SET PATH=%PATH%;%cd%\bin
start myprogram.exe
0
ArmanPrestige
Pied Piper
232 / 223 / 57
Регистрация: 15.01.2013
Сообщений: 855
Завершенные тесты: 1
18.04.2014, 19:33 20
Также интересует данный вопрос. К примеру Viber, который написан на qt, держит свои dll в папочке bin. А exe на один уровень выше.
1
18.04.2014, 19:33
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.04.2014, 19:33

Создание динамических библиотек DLL С++
Помогите реализовать на С++ : Розробити динамічно завантажувану бібліотеку,...

Указать директорию компиляции в code::blocks
Всем доброго времени суток! Недавно скачал code::blocks, никак немогу...

Быстродействие программы при использовании статических и динамических библиотек
Всем привет! Понимаю, что вопрос простой... но не могу, не получить...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru