Hungry Mind , Blog about everything in IT - C#, Java, C++, .NET, Windows, WinAPI, ...

Visual Studio debugger and referenced libraries

Допустим, в своем проекте MyProgram Вы используете некую библиотеку MyLibrary. Как обычно, подключаете MyLibrary.h, MyLibrary.lib. Все компилируется отлично, а вот при попытке запуска...

---------------------------
MyProgram.exe - Unable To Locate Component
---------------------------
This application has failed to start because MyLibrary.dll was not found. Re-installing the application may fix this problem.
---------------------------
OK
---------------------------

Если вы столкнулись с этой ошибкой - читайте дальше.

Сообщение об ошибке говорит, что MyLibrary.dll was not found. Windows ищет dll в следующих местах:

  1. The directory where the executable module for the current process is located.
  2. The current directory.
  3. The Windows system directory. The GetSystemDirectory function retrieves the path of this directory.
  4. The Windows directory. The GetWindowsDirectory function retrieves the path of this directory.
  5. The directories listed in the PATH environment variable.

Вероятно, ни в одном из вышеперечисленных источников MyLibrary.dll не была найдена. Соответственно, для решения проблемы следует положить MyLibrary.dll в одно из этих мест. Пункты 3 и 4 отшибаем сразу, а остальные случаи разберем подробнее.

  1. The directory where the executable module for the current process is located.

    Наверное, это папка bin/Debug проекта, где линкер создает MyProgram.exe. MyLibrary.dll туда можно скопировать путем создания Post Build Event. Мне эта идея не нравится.

  2. The current directory.

    Можно попросить отладчик менять стартовый каталог запускаемого приложения. Для этого есть настройка проекта Debugging->Working Directory. Мне эта идея тоже не нравится.

  3. The directories listed in the PATH environment variable.

    Можно изменить пользовательскую (или системную) переменную PATH (System Properties->Advanced->Environmental Variables->User variables for %USERNAME%), добавив туда каталог с MyLibrary.dll.

    Но мне больше всего нравится следующий трюк: Visual Studio Debugging Environment

1 коммент.:

Анонимный комментирует...

I like it when folks get together and share ideas. Great website, continue the
good work!
Check out my web page ; GFI Norte

Отправить комментарий

Copyright 2007-2011 Chabster