Модуль ".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.

Другие вопросы по тегам