1

我有与这里描述的相同的问题:

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 包制作库项目而不会失败?

4

1 回答 1

3

这与 GitHub 问题中描述的问题完全相同,Nuget 包缺少两个您需要使用 lua52.dll 的 DLL。一个小的区别是,当前的包(版本 1.3.2.1)包括一个更新版本的 lua52.dll,它是用 VS2013 构建的。因此依赖于 msvcr120.dll 和 msvp120.dll。

请注意,当 Nuget 更新您的项目时,这可能会在未来发生变化。

按原样,您需要下载并安装适用于 VS2013 的 Visual C++ 可再发行包。运行 vcredist_x64.exe 和 vcredist_x86.exe,以便您的项目可以在 32 位或 64 位模式下运行。

为避免在要部署程序的机器上执行此操作,我建议您从 c:\windows\system32(64 位)或 c:\windows\syswow64(32 位)复制两个 DLL目录到与您的 EXE 相同的目录中。

包作者可以把这个包放在一起做得更好。除了在包中包含 DLL 之外,更好的解决方案是让他使用 /MT 选项重建 lua52.dll,以便链接这些依赖项。考虑单击“新问题”按钮让他知道。

于 2017-03-11T14:07:16.750 回答