Получение FileNotFoundException на lua51.dll при использовании LuaInterface на C # 4.0, но это прямо там - PullRequest
1 голос
/ 10 октября 2011

Я использую LuaInterface и Lua 5.1 в нескольких приложениях на C #, для которых требовались скрипты, особенно несколько игр, бот IRC и полноценный клиент IRC, над которым я недавно решил возобновить работу.

В какой-то момент я перешел на .Net 4.0 и мне пришлось перекомпилировать LuaInterface и Lua51, чтобы заставить их работать снова.Насколько я мог судить, все было хорошо.

Однако недавно я купил новый ноутбук и попытался запустить с него своего бота.К моему удивлению, он сломался, когда попытался инициализировать Lua, сославшись на исключение FileNotFoundException на lua51.dll, которое находилось прямо там .Я отмахнулся от этого на потом и продолжил переустановку, в том числе Visual C # и C ++ 2010 Express, а также некоторых обновлений.На следующее утро я попытался снова запустить чат-бота, чтобы попытаться выяснить это - и вот, это сработало.По какой-то странной причине.

Ранее сегодня мой друг сказал мне закончить IRC-клиент, над которым я работал, который довольно широко использует Lua для добавления функций и других интересных вещей.Я дал указанному другу копию для проверки наиболее важных проблем ... и он получил точно такую ​​же ошибку.

Теперь у другого парня нет Visual Studio, я не могу воспроизвести проблему,и нельзя ожидать, что пользователи других вещей, перечисленных выше, установят его просто для того, чтобы запустить их - средний относительно здравомыслящий пользователь просто пожал плечами и избавился бы от программы.

Так что же делать, ТАК

Ответы [ 2 ]

1 голос
/ 17 октября 2011

со ссылкой на исключение FileNotFoundException на lua51.dll, которое находилось прямо там

, что делает вероятным, что он жаловался на отсутствие библиотеки DLL, которая нужна lua51.dll.Наиболее вероятным является msvcr100.dll, библиотека поддержки времени выполнения C / C ++.Что делает устанавливается при установке Visual Studio.Вы можете перестроить lua с помощью параметра / MT, чтобы CRT был включен в саму DLL.Или попросите друга загрузить и установить this .

0 голосов
/ 16 октября 2011

Вы можете попробовать SysInternals '1001 * Process Monitor . Я часто использую это, чтобы выяснить причину подобных проблем. Он покажет низкоуровневую информацию о том, где в файловой системе приложение ищет dll, что должно дать вам представление о том, почему он не найден.

Возможно, вам придется поиграть с параметрами поиска и фильтрации, потому что он генерирует много данных, но это лучший инструмент, который я нашел для устранения проблем, подобных этой.

...