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

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

11.04.2011, 17:41. Показов 3341. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Изучаю 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
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru