2011-04-13 19 views
5

Estoy tratando de reproducir archivos de audio con DirectX dll.Loader Lock Excepción al reproducir audio con DirectX

Audio.FromFile("Message 1.mp3").Play(); 

Pero se detecta una excepción de bloqueo del cargador como se muestra a continuación: yo no soy un experto en el análisis de la traza de la pila. ¿Cómo analizar y resolver el problema de bloqueo del cargador?

LoaderLock se detectó

Message: DLL 'C:\Windows\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll' is attempting managed execution inside OS Loader lock. 
Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang. 

Seguimiento de la pila:

'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_32\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.HostingProcess.Utilities.Sync\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.HostingProcess.Utilities.Sync.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualStudio.Debugger.Runtime\9.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.Debugger.Runtime.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'E:\Modules\ToDoApp\bin\Release\ToDoApp.vshost.exe', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC\Microsoft.DirectX.AudioVideoPlayback\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.AudioVideoPlayback.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Core\3.5.0.0__b77a5c561934e089\System.Core.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_32\System.Data\2.0.0.0__b77a5c561934e089\System.Data.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Data.DataSetExtensions\3.5.0.0__b77a5c561934e089\System.Data.DataSetExtensions.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
'ToDoApp.vshost.exe' (Managed): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Xml.Linq\3.5.0.0__b77a5c561934e089\System.Xml.Linq.dll', Skipped loading symbols. Module is optimized and the debugger option 'Just My Code' is enabled. 
The thread 0x127c has exited with code 0 (0x0). 
The thread 0x210 has exited with code 0 (0x0). 
'ToDoApp.vshost.exe' (Managed): Loaded 'E:\Modules\ToDoApp\bin\Release\ToDoApp.exe', Symbols loaded. 
The thread 0x15a8 has exited with code 0 (0x0). 

Editar: I intentado desactivar la excepción de bloqueo de cargador. Hace desaparecer la excepción, pero el archivo no se reproduce.

¿Alguna pista?

Respuesta

5

Básicamente, la versión actual de DirectX no funciona bien con la versión actual de Visual Studio.

DirectX 9.0c no funciona muy bien con Visual Studio. Lo que puede hacer es evitar que se produzca la excepción. Para hacerlo: haga clic en la opción de menú Depurar-> Excepciones ..., abra el elemento "Asistente de depuración administrado" y desmarque la casilla junto a la etiqueta "LoaderLock".

Esto realmente me salvó en un par de ocasiones aunque no es el enfoque más elaborado. Un mejor enfoque sería usar DirectX 10 pero no todos tienen Vista y más.

+0

Sí, lo hice hace unos minutos. La excepción ya no se lanza, pero nuevamente el archivo no se reproduce ... !! – Marshal

+0

Pruebe esto 'var audio = Audio.FromFile (" C: \ sound1.mp3 ", false) \\ The False establece la ejecución automática en false' y luego' audio.Play() '. Asegúrese también de que se hace referencia a 'Microsoft.DirectX.dll' y' Microsoft.DirectX.AudioVideoPlayback'. –

+0

Además, asegúrese de que esté instalada la Actualización del SDK de DirectX 9.0, sin la actualización del SDK, hay problemas con la reproducción, ya que el volumen siempre está configurado en -100. Instale la actualización e intente configurar el volumen en 0. –

Cuestiones relacionadas