Проект функции 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, чтобы увидеть красные значки отсутствующих импорта.
в моем случае отсутствующая функция была функцией,которая не существовала в моей целевой операционной системе Windows XP. Поскольку моя программа напрямую не зависела от этой функции, я смог уйти с #define
ing следующее В моем проекте:
#define WINVER 0x0501
#define _WIN32_WINNT 0x0501
компиляция с этими макросами сделала так, что данная функция не была объявлена в заголовках и, следовательно, не импортировалась во время загрузки. Теперь я смог использовать regsvr32
. Это, конечно, очень специфический (и счастливый) случай. Я не зависел от этого импорта или каких-либо других новых API, поэтому я мог уйти с переназначением проекта. Если бы это была не системная DLL, мне нужно было бы найти более новую версию, которая могла бы легко привести к необходимости обновления целого под-дерева графика зависимостей. Или еще хуже, если бы я зависел от недостающего импорта., потребуется серьезный рефакторинг.
В общем, это сообщение об ошибке2 может быть вызвано следующими проблемами:
- файл DLL не найден или не может быть прочитан. Проверьте командную строку.
- некоторые зависимые библиотеки DLL не найдены или не могут быть прочитаны.
- некоторые импорта отсутствуют в некоторых зависимых библиотеках DLL. Если это системные библиотеки DLL, вы, скорее всего, нацелены на неправильную версию Windows. Если это несистемные Dll, вам нужно установить более новые версии их и всех их зависимостей.
1. Помимо IESHIMS.DLL и WER.DLL, которая, по-видимому, ошибка в этом старом инструменте.
2.: Или действительно, любые проблемы при загрузке библиотек DLL в определенной системе
в этом случае описание ошибки вводит в заблуждение. Система находит вашу DLL (project.dll), но одна (или более) зависимость вашей DLL может отсутствовать.
Я только что установил
Microsoft Visual C++ 2010 Redistributable Package
и теперь я могу установить dll.
хотя это работает, я не слишком доволен этим, потому что я не хочу устанавливать этот пакет на клиенте, чтобы моя dll работала с ними.