Невозможно загрузить DLL 'lua52': указанный модуль не найден

У меня та же проблема, как описано здесь:

https://github.com/NLua/NLua/issues/33

Хотя я следовал инструкциям по созданию консольного приложения...

http://www.screencast.com/t/M12TqePQxW

... что прекрасно работает, когда я создаю проект библиотеки и ссылаюсь на него из другого проекта (в данном случае, проекта Web API) возникает следующая ошибка:

Unable to load DLL 'lua52': The specified module could not be found.

На этой линии:

using (var lua = new Lua())

Как проект библиотеки можно сделать с помощью пакета NLua nuget без сбоев?

1 ответ

Решение

Это та же проблема, что и описанная в проблеме GitHub, в пакете Nuget отсутствуют две библиотеки DLL, которые необходимы для использования lua52.dll. Одно небольшое отличие, текущий пакет (версия 1.3.2.1) включает в себя более новую версию lua52.dll, которая была построена с VS2013. И поэтому имеет зависимость от msvcr120.dll и msvp120.dll.

Помните, что это может измениться в будущем, когда Nuget обновит ваш проект.

Как есть, вам нужно скачать и установить распространяемый пакет Visual C++ для VS2013. Запустите vcredist_x64.exe и vcredist_x86.exe, чтобы ваш проект мог работать как в 32-битном, так и в 64-битном режиме.

Чтобы избежать необходимости делать это на компьютере, на котором вы хотите развернуть свою программу, я рекомендую скопировать две библиотеки DLL из c:\windows\system32 (64-разрядная версия) или c:\windows\syswow64 (32-разрядная версия) каталоги в тот же каталог, что и ваш EXE.

Автор пакета мог бы лучше справиться со сборкой этого пакета. Если не считать включения DLL в пакет, лучшим решением было бы перестроить lua52.dll с параметром /MT, чтобы эти зависимости были связаны между собой. Попробуйте нажать кнопку " Создать проблему", чтобы сообщить ему об этом.

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