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

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

17.04.2014, 18:31. Показов 8243. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Проблема в том, что заюзав кучу динамических библиотек, 20 файлов лежат у меня в директории выходной программы. Хотелось бы их в папочку bin запихнуть, да прога жалуется - найти не может. Настройки проекта смотрел, ничего дельного не нашёл. Не подскажите, что делать?
P.S. надеюсь, исходник не надо...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
17.04.2014, 18:31
Ответы с готовыми решениями:

Как указать для openFileDialog директорию приложения
я столкнулся с такой проблемой, мне нужно в диалоговом окне открыть выбранную папку с документами я использую такой код private void...

Указать стартовую директорию для диалога выбора файла
здравствуйте, помогите разобраться с запросом. Я сделал форму в VBA, сделал там кнопку, по нажатии которой появляется окно открытия...

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

42
 Аватар для WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 19:41  [ТС]
Студворк — интернет-сервис помощи студентам
Ребят, это лично для меня, для систематизации данных. Не нужны мне обходные пути со сменами каталогов и батниками. Мне нужно решение. Пожалуйста.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
18.04.2014, 19:42
Цитата Сообщение от nmcf Посмотреть сообщение
SetDllDirectory влияет только на динамическую загрузку DLL через LoadLibrary. Если привязка статическая, то это бесполезно.
Кроме динамической и статической привязки есть еще delayed import,
сочетающая свойства обеих.
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2014, 19:45
Убеждённый, ты конечно крут, но мы до сих пор не знаем, как у него сделано.
0
 Аватар для WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 19:51  [ТС]
Код выложить?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2014, 19:53
Можно.
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
18.04.2014, 19:54
Вот. Распаковать в любую папку и запустить exe.

DELAY.ZIP

DelayLoad.exe при запуске вызывает функцию из Library.dll, которая выводит
обычный MessageBox. Причем dll-ка лежит не рядом с exe, а в папке bin.

Контрольные суммы, на всякий случай:

File: DELAY.ZIP
Size: 50945 bytes
MD5: 6C4A769A9EDB88AC93092E90508AE32C
SHA-1: D800184A42A6FD6FFD84AA0FB9DE34F0EB86C1D4
SHA-256: ABFB827B181D89759A678EEDBFCE53AE2177F72A F6111B5DE9821C4561CDCD6F
CRC-32: 3AD6DFCC
1
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
18.04.2014, 19:55
Делается это все одним ключом компоновщика (/DELAYLOAD) и SetDllDirectory.
1
 Аватар для WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 20:10  [ТС]
Код, не?
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
18.04.2014, 20:18
Dll
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <Windows.h>
 
 
 
BOOL _stdcall DllMain(HINSTANCE, DWORD, VOID *)
{
    return TRUE;
}
 
 
 
__declspec(dllexport)
void func()
{
    MessageBoxA(NULL, "Hello !", "Message", MB_ICONINFORMATION);
}
Exe
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <string>
#include <Windows.h>
 
 
 
void func();
 
 
 
int _stdcall WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
    // Обработка ошибок опущена для простоты восприятия.
 
    using namespace std;
 
    wchar_t *pBuffer = new wchar_t[32780];
    GetModuleFileNameW(NULL, pBuffer, 32780);    
    wstring Path = pBuffer;
    delete [] pBuffer;
    wstring::size_type iSlash = Path.find_last_of(L"\\/");
    Path = Path.substr(0, iSlash);
    Path += L"\\bin";
    SetDllDirectoryW(Path.c_str());
    func();
    return 0;
}
Visual C++ 2008 SP1 Professional,
конфигурация Release/Win32, все ключи сборки по умолчанию,
за исключением "Runtime Library = Multi-Threaded (/MT)" и
для exe "Delay Loaded Dll = Library.dll".
0
 Аватар для WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 20:30  [ТС]
Всё равно ошибка.
P.S. Почему не прикрепляет картинку с Яндекс.Диск?
http://yadi.sk/d/CScUrtMVMjgCW
0
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
18.04.2014, 20:42
Цитата Сообщение от WinRar007 Посмотреть сообщение
Всё равно ошибка.
Где текст ошибки ? Где сам exe-шник хотя бы ?
0
 Аватар для WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 20:48  [ТС]
SPACE.zip
0
 Аватар для WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 20:52  [ТС]
Ошибка та же.

Добавлено через 24 секунды


Добавлено через 3 минуты
Можно прямо пошагово показать, как делал?
0
 Аватар для iRomul
163 / 104 / 14
Регистрация: 17.10.2012
Сообщений: 488
18.04.2014, 21:16
ArmanPrestige, ну значит он подключается к ним средствами программы, и уже непосредственно в ней производится экспорт функций
1
Ушел с форума
Эксперт С++
 Аватар для Убежденный
16481 / 7444 / 1187
Регистрация: 02.05.2013
Сообщений: 11,616
Записей в блоге: 1
18.04.2014, 22:08
WinRar007, в Вашем exe нет delayed import-а.
В Windows SDK / Visual Studio есть такой инструмент - dumpbin, он
показывает различную информацию про PE-модули (exe/dll/sys), в
том числе и секции импорта.

Вот результат dumpbin.exe, полученный на моем exe-шнике:

dumpbin.exe /ALL /RAWDATA:NONE
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
...
 
Section contains the following delay load imports:
 
    Library.dll
              00000001 Characteristics
              0040DD60 Address of HMODULE
              0040DD4C Import Address Table
              0040C434 Import Name Table
              0040C44C Bound Import Name Table
              00000000 Unload Import Name Table
                     0 time date stamp
 
          00401819               0 ?func@@YAXXZ
 
...
Если "натравить" dumpbin.exe на SPACE.EXE, он никакой информации
про delayed-dll не показывает. То есть, секции с delayed-импортом
вообще в данном exe нету (RVA = 0).

И кстати, задавать данный ключ компоновщика через прагму не следует,
потому что этот метод поддерживает не все опции, а только малую часть.

comment (C/C++)
http://msdn.microsoft.com/en-u... aews7.aspx

Only the following (comment-type) linker options are available to be passed to the linker identifier:

/DEFAULTLIB
/EXPORT
/INCLUDE
/MANIFESTDEPENDENCY
/MERGE
/SECTION
2
 Аватар для WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
18.04.2014, 22:44  [ТС]
А где добавлять? Можно по шагам?
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.04.2014, 22:57
Где-то в свойствах проекта.
0
 Аватар для WinRar007
1 / 1 / 0
Регистрация: 08.04.2014
Сообщений: 80
19.04.2014, 14:01  [ТС]
Где? Я неделю C++ изучаю!
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.04.2014, 14:30
Для Visual Studio 2012:
[]http://i57.***********/big/2014/0419/12/385fea0b0acfdeddc994405f5b5d8712.png[/]
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
19.04.2014, 14:36
Во вложении.
Миниатюры
Как указать директорию для динамических библиотек  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
19.04.2014, 14:36

Как при Process.Start() указать текущую директорию
Уже обращался сегодня по теме запуска сторонних приложений, но тут возникла другая проблема. Решил расширить функции своей утилиты, чтобы...

Как в коде указать директорию в которой находится m - файл
Здравствуйте! В программе используются текстовые файлы, которые находятся непосредственно в директории с m-файлом. Как это указать в...

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

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

Создание динамических библиотек
Немогу создать библиотеку такую чтобы она использовала на данный момент активную форму и рисовала на ней(форме) различные объекты(круги,...


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
Генератор паролей (вариант №4)
Maks 01.11.2026
После публикации 3-го варианта генератора паролей, разослал его своим коллегам (с целью оценки), в итоге были получены следующие рекомендации: 1. Вернуть возможность использования знаков | 1 l I;. . .
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru