Модуль ".dll" был загружен, но точка входа не найдена.
У меня есть DLL, которая вызывает ошибку при запуске приложения. Ошибка говорит о том, что сервис не зарегистрирован. Итак, я запускаю команду regsvr32
с именем DLL. Но это дает мне ошибку, теперь ошибка:
Модуль "mydll.dll" был загружен, но точка входа "DllRegisterServer" не найдена.
Убедитесь, что mydll.dll является допустимым файлом DLL или OCX, и повторите попытку.
Я работал на Windows 7 64-битной. На Windows XP работает нормально! Кто-нибудь знает, что это может быть? Спасибо!
5 ответов
Я нашел ответ: мне нужно добавить новое приложение к служебным компонентам на моем компьютере, а затем добавить нужные библиотеки DLL.
Спасибо! Если у кого-то возникнет такая же проблема, я буду рад помочь.
То, что решило это для меня, использовало:
regasm.exe 'xx.dll' / tlb / codebase / register
Однако важно понимать разницу между regasm.exe и regsvr.exe:
В чем разница между RegAsm.exe и regsvr32? Как сгенерировать файл tlb с помощью regsvr32?
Ошибка указывает на то, что DLL либо не является COM DLL, либо повреждена. Если это не COM DLL и не используется приложением в качестве COM DLL, то нет необходимости регистрировать ее.
Из того, что вы говорите в своем вопросе (the service is not registered)
похоже, что речь идет о сервисе, установленном неправильно. Я постараюсь переустановить приложение.
У меня была эта проблема и
dumpbin /exports mydll.dll
а также
depends mydll.dll
показал 'DllRegisterServer'.
Проблема заключалась в том, что в системе была еще одна DLL с таким же именем. После переименования mydll регистрация прошла успешно.
Убедитесь, что окно командной строки имеет права администратора. Я использую Windows Server 2012 и получаю сообщение об ошибке при использовании regsvr32 в командной строке. Я открыл командную строку, щелкнув ее правой кнопкой мыши в меню «Все программы / Система Windows / Командная строка» и выбрав «Запуск от имени администратора». Запуск regsvr32 в этом окне успешно загрузил файл DLL.