C#应用程序启动时出错 - 无法加载文件或程序集。

5

一些用户(我会说大约10%的用户)在尝试运行我用C# (.NET 4.0)编写的应用程序时会出现问题。在应用程序启动时会出现如下错误:

Could not load file or assembly 'lua51.dll'. Such module could not be found.

- 这是翻译,因此在英文版本中可能会类似。

问题在于大多数用户没有遇到这个问题,并且lua51.dll存在于程序目录中。这个错误的原因是什么?

我在项目->构建选项中设置了平台:x86,但出现了错误。


5
有问题的人是否可能是使用64位机器的人?Lua51.dll因从64位程序集中引用而出现问题而声名狼藉。 - KingCronus
请参见:https://dev59.com/KlnUa4cB1Zd3GeqPc7Fo#6901114 - KingCronus
我已经在我的项目->构建选项中设置了平台:x86。 - user1792042
另一个可能性是缺少lua51.dll的依赖项。如果您可以在他们的计算机上运行depends.exe,这也可能会有所帮助。 - user7116
1个回答

9
这是一个常见的问题,太多程序员只是复制lua51.dll文件,却没有意识到它本身有依赖的DLL需要安装。不幸的是,Windows的错误信息并没有提供真正的问题原因。应用程序日志中的事件可以显示问题原因,但是很少有用户会查看。不过,这种情况并不经常发生,很多机器已经有了所需的依赖DLL。但是这只是偶然,不能依赖它。随着时间的推移,这种可能性越来越小,因为依赖关系变得越来越老旧。
要知道所需的内容,您需要阅读安装说明

Lua for Windows及其模块都依赖于MSVC++ 2005运行库。如果您的计算机上没有安装运行库,Lua for Windows安装程序将自动下载并安装此运行库。运行库包含在文件vcredist_x86.exe中。

因此,要么依赖于Lua安装程序,要么自己安装vcredist。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接