asp.net-mvc - MVC4 应用程序 "Unable to load DLL ' libmp3lame.32.dll'

标签 asp.net-mvc dll naudio

我尝试在 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.dlllibmp3lame.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/

相关文章:

jquery - 使用 Javascript/Jquery 和 Json 数据填充选择框选项

asp.net-mvc - 将 JavaScript 变量传递给 MVC 中的 C# 方法

delphi - 在 Delphi 中,我的 DLL 中是否必须分配函数的返回 pchar

c# - N Audio中AudioFileReader.Length和AudioFileReader.TotalTime有什么关系?

c# - NAudio使用WaveMixerStream32()将2个两个音频混合在一起->如何让第二个音频稍后开始

javascript - 如何创建 jQuery 数据表向下钻取行?

c# - MVC EF 数据库存储库模式

c# - 如何将对象列表从 C++ 传递到 C#?

matlab - 在matlab代码中使用dll文件

c# - 无需写入磁盘即可使用 naudio 将 Mp3 转换为 WAV。 (仅限流媒体)