Проект функции LoadLibrary.ошибка dll. Не удалось найти указанный модуль

когда я пытаюсь зарегистрировать 32-разрядную версию моего проекта C++ / ATL с помощью

regsvr32 project.dll

Я получаю эту ошибку:

LoadLibrary("project.dll") failed - The specified module could not be found
.dll - это моя dll, построенная с помощью ATL в Visual Studio 10.

64-битная версия зарегистрирована нормально.

что я упустил?

3 ответов


Я заметил эту же самую ошибку,но решение не устанавливало распространяемый. Все зависимые библиотеки DLL присутствовали в системе1 по разному.исполняемый.

В моем случае, значок на kernel32.Dll файлы была слегка Красная тонировка. Зависит.exe не предлагал много объяснений, но копание вокруг показало, что одна из импортированных функций отсутствовала в DLL в системе. Чтобы просмотреть импортированные функции, выберите зависимую DLL в treeview и найдите импорт на правой панели. Порядок по столбцу PI, чтобы увидеть красные значки отсутствующих импорта.

Seeing the missing import

в моем случае отсутствующая функция была функцией,которая не существовала в моей целевой операционной системе Windows XP. Поскольку моя программа напрямую не зависела от этой функции, я смог уйти с #defineing следующее В моем проекте:

#define WINVER 0x0501
#define _WIN32_WINNT 0x0501

компиляция с этими макросами сделала так, что данная функция не была объявлена в заголовках и, следовательно, не импортировалась во время загрузки. Теперь я смог использовать regsvr32. Это, конечно, очень специфический (и счастливый) случай. Я не зависел от этого импорта или каких-либо других новых API, поэтому я мог уйти с переназначением проекта. Если бы это была не системная DLL, мне нужно было бы найти более новую версию, которая могла бы легко привести к необходимости обновления целого под-дерева графика зависимостей. Или еще хуже, если бы я зависел от недостающего импорта., потребуется серьезный рефакторинг.

В общем, это сообщение об ошибке2 может быть вызвано следующими проблемами:

  1. файл DLL не найден или не может быть прочитан. Проверьте командную строку.
  2. некоторые зависимые библиотеки DLL не найдены или не могут быть прочитаны.
  3. некоторые импорта отсутствуют в некоторых зависимых библиотеках DLL. Если это системные библиотеки DLL, вы, скорее всего, нацелены на неправильную версию Windows. Если это несистемные Dll, вам нужно установить более новые версии их и всех их зависимостей.

1. Помимо IESHIMS.DLL и WER.DLL, которая, по-видимому, ошибка в этом старом инструменте.
2.: Или действительно, любые проблемы при загрузке библиотек DLL в определенной системе


в этом случае описание ошибки вводит в заблуждение. Система находит вашу DLL (project.dll), но одна (или более) зависимость вашей DLL может отсутствовать.


Я только что установил

Microsoft Visual C++ 2010 Redistributable Package 

и теперь я могу установить dll.

хотя это работает, я не слишком доволен этим, потому что я не хочу устанавливать этот пакет на клиенте, чтобы моя dll работала с ними.