2009-03-29 2 views
2

Я получаю сообщение об ошибке «dll not found: restart of the app может исправить ошибку» при попытке выполнить простое консольное приложение «HelloWorld» win32. Я знаю, где находится .dll. Как указать его местоположение при выполнении .exe из командной строки?Настройка пути к библиотеке для консольных приложений win32

PS: копирование .dll в текущее dir .exe, похоже, решает проблему, но этот подход не подходит в этом случае.

ответ

4

Загрузка DLL происходит глубоко в сантехнике окон.

Если DLL не найдена в том же каталоге, что и приложение, PATH автоматически сканируется, чтобы найти каталог.

Итак, самый простой ответ на вашу проблему - добавить каталог, содержащий DLL, в ваш PATH. В зависимости от того, когда DLL должен быть загружен вашим кодом, вы можете (временно) изменить PATH из своего приложения «HelloWorld».

1

В документации для LoadLibraryEx есть обсуждение того, как Windows ищет вашу DLL. Вы можете попробовать использовать флаг LOAD_WITH_ALTERED_SEARCH_PATH, если вы можете построить полный путь к своей DLL или использовать функцию SetDllDirectory, чтобы добавить каталог в путь поиска.

1

Чтобы вручную добавить путь к Windows PATH (навсегда = до его удаления), щелкните правой кнопкой мыши Мой компьютер> Свойства> Дополнительно> Переменные среды> Системные переменные> Путь> Изменить> Значение переменной, добавьте точку с запятой (которая означает «в дополнение ко всем ранее») и вставьте полный путь к вашей DLL.

Windows будет искать путь каждый раз, когда не сможет найти что-либо в текущем каталоге.

1

От: http://msdn.microsoft.com/en-us/library/7d83bc18.aspx

С и неявного и явного связывания, Windows, сначала ищет "известных библиотек DLL", такие как Kernel32.dll и User32.dll. Windows, затем осуществляет поиск библиотек DLL в следующей последовательности:

  1. каталог, где исполняемый модуль для текущего процесса находится.

  2. Текущий каталог.

  3. Системный каталог Windows. Функция GetSystemDirectory возвращает путь к этому каталогу.

  4. Каталог Windows. Функция GetWindowsDirectory возвращает путь к этому каталогу.

  5. Каталоги, перечисленные в переменной среды PATH.

Смежные вопросы