我尝试在 MVC4 应用程序中使用 NAudio.Lame 库,但收到错误:
Unable to load DLL 'libmp3lame.32.dll': The specified module could not be found.
我通过 NuGet 添加了库。我能够让该库与 Windows 窗体应用程序一起正常工作,因此我相信该问题是 MVC4 特有的。
我在这里尝试了库作者的建议: https://stackoverflow.com/a/20065606/910348
最佳答案
问题原来是找不到 native DLL(libmp3lame.32.dll
和 libmp3lame.64.dll
),因为 Web 的当前目录服务器进程不是从网站的 bin
文件夹(DLL 所在的位置)执行的,并且搜索路径不包括 bin
文件夹。
您需要将 bin
文件夹添加到 PATH
环境变量中,这将使 LoadLibrary
API 调用能够定位 DLL .
您可以调用以下方法来为您执行此操作:
public static void CheckAddBinPath()
{
// find path to 'bin' folder
var binPath = Path.Combine(new string[] { AppDomain.CurrentDomain.BaseDirectory, "bin" });
// get current search path from environment
var path = Environment.GetEnvironmentVariable("PATH") ?? "";
// add 'bin' folder to search path if not already present
if (!path.Split(Path.PathSeparator).Contains(binPath, StringComparer.CurrentCultureIgnoreCase))
{
path = string.Join(Path.PathSeparator.ToString(), new string[] { path, binPath });
Environment.SetEnvironmentVariable("PATH", path);
}
}
将其放入 Controller 中并在创建 LameMP3FileWriter
实例之前调用它。如果您将其放入 Global.asax.cs
中并从 Application_Start()
调用它,它可能会起作用。尝试一下,然后告诉我它是否有效。
我已经在项目网站上发布了一篇关于此问题的 Wiki 文章 here .
关于asp.net-mvc - MVC4 应用程序 "Unable to load DLL ' libmp3lame.32.dll',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20088743/