2010-05-09 7 views
4

Je viens d'essayer d'exécuter les démos NAudio et que je reçois une erreur bizarre:démos NAudio ne fonctionne plus

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]. 

Depuis la dernière fois que je démos NAudio j'ai changé de Windows XP 32 bits pour Windows 64 bits 7. Cela causerait-il ce problème? C'est très ennuyeux car j'allais essayer ma main à l'audio en C# à nouveau

Répondre

7

Je n'ai aucune expérience avec NAudio, mais l'exception que vous mentionnez le plus souvent se produit quand il y a un problème de bitness. Ce qui signifie que NAudio est peut-être compilé pour 32 bits seulement, et vous exécutez 64 bits. Pour résoudre ce problème, dans les propriétés de compilation de votre projet, définissez la sortie sur 32 bits (x86).

+0

qui l'a réparé merci :) [réponse correcte cochez Driis parce que, apparemment, sa réponse est «plus ancien» ou d'abord :) – Kurru

3

Votre programme tente de charger une DLL 32 bits dans un processus 64 bits (ou vice versa). Sous Windows, un programme 32 bits ne peut charger qu'une DLL 32 bits et un programme 64 bits ne peut charger qu'une DLL 64 bits.

Votre programme cible probablement AnyCPU en tant que plate-forme, de sorte que le compilateur émet IL qui, à l'exécution, devient un processus 32 ou 64 bits basé sur votre plate-forme. La DLL que vous utilisez (NAudio) est probablement construite uniquement pour la plate-forme x86.

Dans les propriétés de votre projet, essayez de forcer la plate-forme à être x86.