Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/16: Рейтинг темы: голосов - 16, средняя оценка - 4.75
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547

Линковка DLL с произвольным размещением

11.04.2011, 17:41. Показов 3372. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, где в VS можно задать предопределенное (не стандартное, а скажем, C:\Program Files\Program1\Bin) расположение линкуемой DLL.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.04.2011, 17:41
Ответы с готовыми решениями:

Ошибка об отсутствии MSVCP140D.dll, ucrtbased.dll, CONCRT140D.dll, VCRUNTIME140D.dll
Добрый день, товарищи. Возникла проблема. Делаю программу с использованием openCV 3.1 на Visual Studio 2013. При компиляции выдает ошибку...

линковка *.asm к dll
Всем привет! Скажите пожалуйста, как прилинковать *.asm к dll. Если можно, то c примером на линковщике vs. Всем спасибо!

Open MP vcomp140.dll статическая линковка
Доброго дня и с Новым Годом!!! Решил использовать OpenMP в своем проекте на Visual Studio 2017, включил в свойствах конфигурации С/С++...

15
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
12.04.2011, 16:25
Под цифрой Два http://lh3.ggpht.com/_lV8Tjg9J... 800/01.png
Но это путь до lib. dll должна быть либо в директории с exe, в рабочей директории или в директории прописанной а PATH.
1
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
12.04.2011, 17:40  [ТС]
Спасибо, но интересует именно момент, когда DLL может располагаться в любом произвольном каталоге, даже не указанном в окружении. Т.е. чтобы в EXE в секции импорта стояло не просто имя DLL, а полный путь к ней. По крайней мере в Delphi это решается простым указанием полного пути при задании описания экспортируемой функции. А вот у MS что-то никак не найду такого способа. (Это надо ввиду того, что программы размещают свои библиотеки в своих каталогах, и достучаться до них не получается. LoadLibrary тоже не всегда подходит)
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
12.04.2011, 20:52
Манифест если поправить, но не скажу как именно.) Через LoadLibrary можно из любого места загрузить, не знаю в чём у тебя проблема возникла, но это уже явная загрузка получается. Немного сложнее оно.
1
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
12.04.2011, 23:05  [ТС]
Спасибо, посмотрю, что за манифест и с чем его едят: никогда раньше их не пользовал. А с LoadLibrary сложностей нет, но не хотелось бы заморачиваться. Пока обхожусь PATH-ом, но это не лечение, а голая припарка. Никак не думал, что в таком, в общем-то довольно мощном компиляторе, как VS нет простого способа решения.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
13.04.2011, 07:12
Дело не в компиляторе. Дело в Windows.
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
23.04.2011, 13:48  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
Дело не в компиляторе. Дело в Windows.
А с этим не согласен. Если в EXE поменять голое имя на имя с путем, все работает нормально, так что сама Windows тут ни при чем. Просто VS не позволяет задать такое имя при компоновке модуля. Сейчас, пока не найдено лучшее решение, использую через PostBuild простую утилитку, меняющую имя DLL, и, по крайней мере пока, сбоев не обнаруживалось.

А вот через манифесты тоже не нашел решения...
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
23.04.2011, 16:54
Цитата Сообщение от kukuruku310 Посмотреть сообщение
Если в EXE поменять голое имя на имя с путем, все работает нормально, так что сама Windows тут ни при чем.
Именно Windows и при чём. У тебя меняется текущая директория. Относительный путь задаётся относительно рабочей директории.

Цитата Сообщение от kukuruku310 Посмотреть сообщение
PostBuild простую утилитку, меняющую имя DLL
Ты же LoadLibrary используешь? Что тебе мешает получить путь до exe файла и сформировать абсолютный путь до библиотеки?
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
23.04.2011, 18:58  [ТС]
Я как раз не хочу использовать LoadLibrary, а делать вызов всех ее функций простым указанием имени без всяких там приведений адресов к типу.

Добавлено через 3 минуты
Цитата Сообщение от Deviaphan Посмотреть сообщение
У тебя меняется текущая директория. Относительный путь задаётся относительно рабочей директории.
нет, не меняется. Я просто указываю системе полный путь расположения DLL, которая может быть не только в другом каталоге, а вообще на другом диске (DLL не моя, а от какой-то другой установленной программы, и раполагается она именно в каталоге той программы)
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
23.04.2011, 19:10
Цитата Сообщение от kukuruku310 Посмотреть сообщение
раполагается она именно в каталоге той программы
Т.е. ты после компиляции вписываешь путь до другой программы, которая может быть установлена не в стандартный каталог?

Добавлено через 4 минуты
Цитата Сообщение от kukuruku310 Посмотреть сообщение
через манифесты тоже не нашел решения
Типо такого:
#pragma comment(linker, "/manifestdependency:\"name='Plugins' "\
"processorArchitecture='*' version='1.0.0.0' "\
"type='win32'\"")

Вместо Plugins абсолютный путь задай до директории с левой прогой. Сперва будет искать в папке с ехе, потом в этой и дальше, как обычно.
0
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
23.04.2011, 19:19  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
Т.е. ты после компиляции вписываешь путь до другой программы, которая может быть установлена не в стандартный каталог?
Ну да, только не до программы, а до ее DLL, расположенной в этом каталоге, а расположение стандартное - "Program Files"

Цитата Сообщение от Deviaphan Посмотреть сообщение
Типа такого:
Спасибо, попробую. Сам что-то не нашел в манифестах подобного.
Кстати, не подскажите, где это описано, а то в своем MSDN я как-то не сумел обнаружить использование конструкции #pragma ... в манифесте
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
23.04.2011, 19:25
Цитата Сообщение от kukuruku310 Посмотреть сообщение
Сам что-то не нашел в манифестах подобного
Это нужно в cpp файле написать. Должно добавить к встроенному манифесту.
Цитата Сообщение от kukuruku310 Посмотреть сообщение
расположение стандартное - "Program Files"
А разве пользователь не может поменять директорию установки сторонней программы? Или ты про Common? Потенциальные проблемы могут быть, в общем.
1
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
23.04.2011, 19:43  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
Потенциальные проблемы могут быть, в общем.
Ну да. Но у меня случай, когда на всех машинах эта DLL всегда лежит в одном месте. А за..рать PATH неохота. "Проблема", конечно, надуманная, но вот столкнулся... Как-то просто не предполагал, что нельзя указать абсолютный путь. В Delphi это делается совершенно легко, вот и думал, что просто не нашел место в опциях, где это нарисовать

Добавлено через 2 минуты
Цитата Сообщение от Deviaphan Посмотреть сообщение
Это нужно в cpp файле написать. Должно добавить к встроенному манифесту.
Где об этом вычитали, если не секрет? Я у себя в справке по #pragma такого не нашел
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
23.04.2011, 19:48
"Да что ж за гугло-импатенты такие?"
.))) В комментах сегодня прочитал.) И сразу появилась возможность использовать.)
http://msdn.microsoft.com/en-u... y5khy.aspx

Добавлено через 1 минуту

Не по теме:

Надо горячую клавишу на эту фразу сделать.)))



А нашёл по запросу "c++ неявная загрузка dll относительный путь"

Добавлено через 35 секунд
VC7 минимум нужна, кажется.
1
306 / 187 / 26
Регистрация: 14.02.2010
Сообщений: 547
23.04.2011, 19:57  [ТС]
Цитата Сообщение от Deviaphan Посмотреть сообщение
"Да что ж за гугло-импатенты такие?"
1. Старый я совсем... так что до импатенции уже рукой подать...
Ну а серъезно, так искал в локальном MSDN, как-то не думал, что там чего-то может быть не указано из
таких простых вещей.
А нашёл по запросу "c++ неявная загрузка dll относительный путь"
так я и не искал по "неявная загрузка". Почему? Так, скорее всего, ответ в п.1
VC7 минимум нужна, кажется.
Все понятно. У меня он такой же старый, как и я сам.
0
Делаю внезапно и красиво
Эксперт С++
 Аватар для Deviaphan
1313 / 1228 / 72
Регистрация: 22.03.2011
Сообщений: 3,744
23.04.2011, 19:59
Цитата Сообщение от kukuruku310 Посмотреть сообщение
Так, скорее всего, ответ в п.1
Именно.)
Нельзя найти то, что нужно, если ищешь что-то другое. Только случайно, разве что.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.04.2011, 19:59
Помогаю со студенческими работами здесь

Линковка dll от netCDFв фортрановский проект
Привет! Столкнулся с проблемой - не получается использовать в проекте файлы для поддержки netcdf вывода, реализованного в...

Динамическая линковка dll в процессе выполнения программы
Есть dll с пространством имен парой функций и классов пример //MyDll.cpp namespace NS{ class FSomeClass{ }

Как происходит линковка между проектом и DLL?
Всем привет. 100500-я "уникальная" тема "как привязать DLL к проекту". форум я перерыл темы в ответах проработал Страуструпа - проработал. ...

Линковка DLL Direct3D и XAudio в один exe
Сабж.Надо залинковать DLL Directx вместе с Exe файлом чтобы не таскать его везде + не требовать установки Directx

Создайте dll с произвольным набором простых функций — на ваше усмотрение
Уважаемые форумчане, есть такая задачка "Создайте dll с произвольным набором простых функций - на ваше усмотрение. Создайте еще одну...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита, которое может. . .
Команды "Заполнить" и "Очистить" на форме документа
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". На примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных выбран регистр накопления, в. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru