繁体   English   中英

在ASP.NET MVC Core 1.0(Aka)ASP.net 5 MVC 6中加载非托管dll参考

[英]Load Unmanaged dll reference in ASP.NET MVC Core 1.0 (Aka) ASP.net 5 MVC 6

此问题与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是未管理的dll,在WPF项目中,我只是将dll复制到bin文件夹,并且一切正常,但是如何在Web API项目中实现这一目标,我的意思是asp.net 5项目

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

另外现在我的API仅支持dotnetframwork,这意味着只有Windows 删除了其他平台依赖项

更新:

在ASP.Net MVC创建问题回购

我参加聚会有点晚了,但我会分享给大家。 NAudio可以将WAVE转换为MP3,而无需使用非托管DLL,从而避免了这个问题。 唯一的麻烦是它必须写出到文件(然后可以读回文件)。 假设您有一个MemoryStream,在其中读取了所有字节(就像您一样):

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

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

如何在ASP.NET Core 1.0中获取bin文件夹

MVC4应用程序“无法加载DLL'libmp3lame.32.dll'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM