Не удалось зарегистрировать dll с помощью regsvr32: Не удалось загрузить модуль *.dll

Есть аналогичный вопрос из stackoverflow. Но я не нашел, что ответ полезен. Я также использовал Google для поиска веб-сайтов, я смотрел здесь и здесь. Я попробовал метод, который они сказали, чтобы решить эту проблему, но не получил удовлетворительного ответа.

Моя операционная система — 32-разрядная Window 7. Noncircle.dll генерируется Matlab версией 2010a на другой машине, на которой установлена ​​Matlab. Я попытался добавить Noncircle.dll в качестве ссылки в проект, написанный на C# (я не устанавливал Matlab на свой компьютер), но Visual-Studio 2010 сообщил мне об ошибке:

введите здесь описание изображения

Так что я сомневаюсь, что Noncircle.dll нужно регистрировать. Поэтому я вставил Noncircle.dll в C:\Windows\System32, запустил Cmd.exe от имени администратора и набрал:

regsvr32 Noncircle.dll

Затем я получил ошибку:

"The module "Noncircle.dll" failed to load.Make sure the binary is sorted at the 
 specified  path or debug it to check for problems with the binary or depenedent 
 .DLL files.The specified module coudl not be found."

Не могли бы вы дать мне несколько советов, спасибо заранее!

Обновлено 18 октября 2012 г.

Но если я установил на свою машину Matlab версии 2010a, эта проблема решена.


person viperchaos    schedule 06.12.2011    source источник
comment
Когда вы говорите, что Noncircle.dll был сгенерирован MATLAB, как он был сгенерирован? Используете компилятор MATLAB? Используете MATLAB Builder NE для .NET? Используете MATLAB Coder? Установлена ​​ли на вашем компьютере среда выполнения компилятора MATLAB (не на машине, на которой была сгенерирована .dll, а на вашем компьютере)?   -  person Sam Roberts    schedule 07.12.2011
comment
Я просто нажимаю File\New\Deployment Project в MATLAB, чтобы сгенерировать Noncircle.dll. Я не могу утверждать, что таким образом Matlab генерирует Noncircle.dll. да. У меня на компьютере установлена ​​среда выполнения компилятора MATLAB, но я получил те же результаты.   -  person viperchaos    schedule 07.12.2011
comment
File>New>Deployment Project должно появиться диалоговое окно с запросом имени проекта и типа проекта. Что вы выбираете для типа проекта — в зависимости от того, какие продукты вы установили, у вас могут быть варианты, включая автономное приложение Windows, консольное приложение, общую библиотеку C, общую библиотеку C++, сборку .NET, общий компонент COM (и другие, не относящиеся к этот вопрос).   -  person Sam Roberts    schedule 07.12.2011
comment
Я выбрал Generic COM Component (извините, что не предоставил подробную информацию о создании dll, потому что другой парень сгенерировал dll с помощью MATLAB)   -  person viperchaos    schedule 07.12.2011
comment
Это происходит, когда сама regsvr32.dll не зарегистрирована, хотя в противном случае это требуется. Словить 22. Я уверен, что есть люди, которые знают, как это сделать, но они не говорят. Ждать. Это причина, когда regsvr32 сообщает, что загружает модуль, но не может найти точку входа.   -  person Dimitri    schedule 14.09.2013


Ответы (2)


У меня была такая же проблема.

Если вы используете 64-разрядную версию Windows и поместили 32-разрядную DLL в папку Windows\System32\, вы получите эту ошибку.

Просто поместите DLL в Windows\SysWOW64\ и зарегистрируйте ее оттуда.

Вот где я нашел исправление:

http://csi-windows.com/blog/all/73-windows-64-bit/378-fixing-qregsvr32-the-module-failed-to-load-the-specified-module-could-not-be-foundq

person WhatEvil    schedule 26.02.2014

Прежде всего, попробуйте использовать RegDllView, чтобы увидеть, действительно ли COM-сервер зарегистрирован в система.

Также проверьте, является ли эта DLL компонентом COM.

person Andrey Rubshtein    schedule 06.01.2012