NAudio 演示不再工作

Posted

技术标签:

【中文标题】NAudio 演示不再工作【英文标题】:NAudio demos not working anymore 【发布时间】:2010-05-09 20:33:42 【问题描述】:

我刚刚尝试运行 NAudio 演示,但遇到了一个奇怪的错误:

System.BadImageFormatException: Could not load file or a
ssembly 'NAudio, Version=1.3.8.0, Culture=neutral, PublicKeyToken=null' or one o
f its dependencies. An attempt was made to load a program with an incorrect form
at.
File name: 'NAudio, Version=1.3.8.0, Culture=neutral, PublicKeyToken=null'
   at NAudioWpfDemo.AudioGraph..ctor()
   at NAudioWpfDemo.ControlPanelViewModel..ctor(IWaveFormRenderer waveFormRender
er, SpectrumAnalyser analyzer) in C:\Users\Admin\Downloads\NAudio-1.3\NAudio-1-3
\Source Code\NAudioWpfDemo\ControlPanelViewModel.cs:line 23
   at NAudioWpfDemo.MainWindow..ctor() in C:\Users\Admin\Downloads\NAudio-1.3\NA
udio-1-3\Source Code\NAudioWpfDemo\MainWindow.xaml.cs:line 15

WRN: Assembly binding logging is turned OFF.
To enable assembly bind failure logging, set the registry value [HKLM\Software\M
icrosoft\Fusion!EnableLog] (DWORD) to 1.
Note: There is some performance penalty associated with assembly bind failure lo
gging.
To turn this feature off, remove the registry value [HKLM\Software\Microsoft\Fus
ion!EnableLog].

自从我上次使用 NAudio 演示后,我已从 32 位 Windows XP 更改为 64 位 Windows 7。这会导致此问题吗?这很烦人,因为我正要再次尝试 C# 中的音频

【问题讨论】:

【参考方案1】:

我没有使用 NAudio 的经验,但是您提到的异常最常发生在存在位数问题时。这意味着 NAudio 可能仅编译为 32 位,而您运行 64 位。

要尝试解决此问题,请在项目的编译属性中,将输出设置为 32 位 (x86)。

【讨论】:

修复了谢谢 :) [正确答案打勾,因为显然他的答案是“旧”或第一个 :)【参考方案2】:

您的程序正在尝试将 32 位 DLL 加载到 64 位进程中(反之亦然)。在 Windows 上,32 位程序只能加载 32 位 DLL,64 位程序只能加载 64 位 DLL。

您的程序可能以 AnyCPU 作为平台,因此编译器会发出 IL,在运行时会根据您的平台变成 32 位或 64 位进程。您使用的 DLL (NAudio) 可能仅针对 x86 平台构建。

在您的项目属性中,尝试强制平台为 x86。

【讨论】:

以上是关于NAudio 演示不再工作的主要内容,如果未能解决你的问题,请参考以下文章

naudio 音频流到 html / 网页

代号一个动画麻烦(也在纸牌演示中)?

使用 NAudio 将 g722 音频转换为 WAV

NAudio:“无法实例化 ASIO。检查是不是设置了 STAThread”

在 WPF C# 中使用 NAudio 录制音频

在 NAudio waveOut 上无法流畅播放,WaveProvider 被清空太快