Как прописать путь к сопутствующим программе Dll, чтобы при запуске скомпилированной программы из Visual Studio (Visual C++) не было сообщений, что они не найдены.
Интересует, чтобы это было сделано средствами Visual Studio и относилось к конкретному проекту и путь к Dll был именно произвольно заданным.
1. Я Принципиально не хочу держать dll в папке с проектом.
2. Принципиально не хочу использовать глобальную переменную PATH.
Здравствуйте, Serpuh, Вы писали:
S>Здравствуйте, ahaos, Вы писали: A>>2. Принципиально не хочу использовать глобальную переменную PATH.
S>А в чем эта принципиальность заключается? Я использую несколько версий OpenCV, у каждого проекта пути к своим либам прописаны, проблем не возникает.
У меня версии программы x86 и x64 в одном Solution некоторые dll имеют одинаковые имена. Сейчас я вручную скидываю нужные Dll в корень SolutionDir когда нужно, но это не удобно. А PATH еще хуже.
Здравствуйте, ahaos, Вы писали: A>У меня версии программы x86 и x64 в одном Solution некоторые dll имеют одинаковые имена. Сейчас я вручную скидываю нужные Dll в корень SolutionDir когда нужно, но это не удобно. А PATH еще хуже.
Можно в C:\ProgramData в разные папки закинуть или C:\Users\currUser\AppData\Local , а в программе через системные переменные к этим папкам обращаться.
Здравствуйте, ahaos, Вы писали: A>Как прописать путь к сопутствующим программе Dll, чтобы при запуске скомпилированной программы из Visual Studio (Visual C++) не было сообщений, что они не найдены. A>Интересует, чтобы это было сделано средствами Visual Studio и относилось к конкретному проекту и путь к Dll был именно произвольно заданным. A>1. Я Принципиально не хочу держать dll в папке с проектом. A>2. Принципиально не хочу использовать глобальную переменную PATH.
Предположим есть приложение main.exe которое хочет библиотеку add.dll
main.cpp
// main.cpp#include <stdio.h>
extern"C"__declspec(dllimport) int __stdcall add(int x,int y);
int main(int argc,char** argv) {
int r=add(1,2);
printf("add(1,2)=%d\n",r);
return 0;
}
ps: Винда манифесты кэширует так что после изменений надо запустить без манифеста и потом опять с манифестом иначе она будет брать данные не из файлов, а из своего кэша. Всё это безобразие работает начиная с win7. Все эти манифесты можно втолкать в бинарники, что бы было меньше файлов.
Здравствуйте, ahaos, Вы писали:
A>Как прописать путь к сопутствующим программе Dll, чтобы при запуске скомпилированной программы из Visual Studio (Visual C++) не было сообщений, что они не найдены. A>Интересует, чтобы это было сделано средствами Visual Studio и относилось к конкретному проекту и путь к Dll был именно произвольно заданным.
Здравствуйте, ahaos, Вы писали:
A>Как прописать путь к сопутствующим программе Dll, чтобы при запуске скомпилированной программы из Visual Studio (Visual C++) не было сообщений, что они не найдены.
В настройках проекта "Каталоги VC++"->"Каталоги исполняемых файлов". По-моему тут. Для каждой конфигурации свои пути можно прописать. В ранних студиях настройка была единая для всех конфигураций.