【问题标题】:Load Unmanaged dll reference in ASP.NET MVC Core 1.0 (Aka) ASP.net 5 MVC 6在 ASP.NET MVC Core 1.0 (Aka) ASP.net 5 MVC 6 中加载非托管 dll 引用
【发布时间】:2016-05-09 05:45:53
【问题描述】:

这个问题与 ASP.NET MVC WEP API 和 Naudio 相关

我想要什么

当我使用此代码时,我正在 WPF 应用程序中工作原型,将 wav 文件转换为 mp3

var retMs = new MemoryStream();
using (var ms = new MemoryStream(File.ReadAllBytes("sound.wav")))
using (var rdr = new WaveFileReader(ms))
using (var wtr = new LameMP3FileWriter(retMs, rdr.WaveFormat, 128))
{
    rdr.CopyTo(wtr);
}
return retMs.ToArray();

但是在 api 项目中使用此代码时,我遇到了这样的错误

无法加载 DLL 'libmp3lame.dll':指定的模块不能被 找到了。

我知道 libmp3lame 是 unmanged dll,WPF 项目我只是将 dll 复制到 bin 文件夹,一切正常,但我如何在 Web API 项目中实现这一点,我的意思是asp.net 5项目

注意
上述代码在 wpf 项目中正常工作

此外,现在我的 API 仅支持 dotnetframwork 仅表示 Windows 我删除了其他平台依赖项

更新:

在 ASP.Net MVC Repo 中创建问题

【问题讨论】:

    标签: asp.net-web-api asp.net-core-mvc naudio asp.net5


    【解决方案1】:

    我参加聚会有点晚了,但我会为后代分享这个。 NAudio 可以在没有非托管 DLL 的情况下将 WAVE 转换为 MP3 来避免这个问题。唯一的障碍是它必须写出一个文件(然后可以读回)。假设您有一个 MemoryStream,您可以在其中读取所有字节(就像您所做的那样):

    using (var wfr = new WaveFileReader(ms))
    {
        MediaFoundationApi.Startup();
        MediaFoundationEncoder.EncodeToMp3(wfr, @"C:\Temp\test.mp3", 48000);
        MediaFoundationApi.Shutdown();
    }
    

    【讨论】:

      【解决方案2】:

      听起来像是在 bin 库路径中获取到模块的映射的问题,请查看以下内容可能会有所帮助 -

      How to get bin folder in ASP.NET Core 1.0

      MVC4 App "Unable to load DLL 'libmp3lame.32.dll'

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多