Как я могу запустить .exe с DLL в отдельном каталоге? - PullRequest
7 голосов
/ 23 апреля 2011

Я знаю, что это уже обсуждалось где-то здесь, но я не нашел вопрос, который хотел, а именно: у меня есть приложение C ++, которое использует много (более 20 -30) DLL. В моем проекте Visual Studio 2010 я определил, что .exe будет скопирован в ProjectDir (чтобы все было аккуратно и понятно), но когда .exe стоит только в ProjectDir, он не может получить доступ к библиотекам DLL, хранящимся в корзине. // любую папку вместе со многими другими файлами.

Можно ли как-то указать папку DLL, чтобы приложение узнало, где они находятся? (и папка <myapp>.exe.local не работает в моей Windows 7)

Ответы [ 2 ]

3 голосов
/ 24 апреля 2011

Прежде всего, нет необходимости копировать ваш exe-файл в каталог вашего проекта, где бы ни был создан ваш .exe-файл при отладке проекта, работающий каталог будет вашим каталогом проекта.и после этого, когда вы пытаетесь импортировать dll, если вы ищете его относительно Windows, сначала ищите эту dll в вашем рабочем dir, затем он проверяет, может ли он найти dll в какой-либо директории, определенной системной переменной PATH, но если вы проверитедля абсолютного адреса не будет никакого поиска.

, поэтому первый трюк состоит в том, чтобы установить все ваши dll-пути абсолютными, чтобы не было никакого поиска, и dll легко импортируются, но будет много проблем, если выхотите перенести приложение на другой компьютер (например, HINSTANCE hDLL = LoadLibrary(L"C:\\mydll.DLL");).во-вторых, вы можете указать свои dll-пути относительно работающего dir (не путь к приложению, эти 2 могут отличаться), и вы также можете указать каталог для этого (например, HINSTANCE hDLL LoadLibrary("..\\dlls\\mydll.dll")

0 голосов
/ 23 апреля 2011

Вы можете установить переменную PATH.Здесь вы можете найти, где Windows ищет dll: http://msdn.microsoft.com/en-us/library/ms682586%28v=vs.85%29.aspx и здесь, как установить путь в Windows 7: http://geekswithblogs.net/renso/archive/2009/10/21/how-to-set-the-windows-path-in-windows-7.aspx

...