Как добавить путь к исполняемой DLL в проекте VIsual C ++ Express 2010? - PullRequest
5 голосов
/ 23 октября 2010

У меня есть некоторые внешние зависимости для загрузки с моей программой на C ++, такие как boost или другие библиотеки. Если эти библиотеки .DLL не находятся в $ PATH, после запуска моей программы я получаю сообщение об ошибке «Не могу загрузить DLL». Чтобы эти .DLL можно было загружать при запуске моей программы, мне нужно добавить этот путь в каталог библиотеки. Например:

PATH=$PATH;c:\boost\lib

Это работает, но мне не нравится это глупое решение, которое загрязняет глобальную среду. Кроме того, у меня есть еще много зависимостей, чтобы добавить. Худшее, что можно сделать таким образом, это то, что если у вас другая версия зависимостей, это очень раздражает. например Здесь у вас есть проект А, который зависит от boost1.3.7, для его разработки необходимо изменить PATH

PATH=$PATH;c:\boost1.3.7\lib

И, здесь вам нужно разработать еще один проект B, который зависит от boost1.4.4, о, отлично .... измени переменную

PATH=$PATH;c:\boost1.4.4\lib

Как видите, это не разумное решение .... Если у вас есть несколько библиотек для ссылки, это будет настоящий кошмар. Я хочу изменить свойство проекта VC ++, добавлять эти пути в переменную PATH только при запуске / отладке моей программы. Я попытался добавить путь к

VC++ Directories -> Executable Directories

Но, похоже, это ПУТЬ для строительства, а не для бега. Итак, как я могу добавить пути к моему проекту VC ++ для правильного запуска моей программы?

1 Ответ

1 голос
/ 23 октября 2010

не знаете, почему вы считаете его добавлением в PATH «глупым» решением?Это очень распространенное решение для сторонних библиотек.Что если вы хотите перераспределить ваше приложение или просто запустить его из командной строки вместо того, чтобы запускать его под VS?

, если вы настаиваете на том, чтобы не изменять глобальный путь, вы также можете попробовать:

  • добавить требуемые dll в каталог исполняемого файла (= очень грязный и подверженный ошибкам в случае нескольких версий и / или нескольких путей сборки)
  • добавить сохраненные dll в% WINDIR% / system32 (то же самоепримечание, как указано выше)
  • создайте пакетный файл, который устанавливает желаемую переменную PATH, а затем вызовите VS.Теперь VS использует PATH, который вы только что установили, в то время как глобальный PATH остается неизменным.
  • Вы можете попробовать установить dll в папки WinSxS, но это не так просто. (например)

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

mklink /J c:/boost c:/boost1.3.7

, затем добавьте просто c: / boost в вашу PATH.Если версия меняется, измените символическую ссылку вместо среды

...