Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Info Coronavirus/Vaccinare vs Fake News

Telefon de pe Amazon sau site rom...

Digitalizare in domeniul Horeca

Asigurare la B7 cat mai ajunge?
 cumparare masina inmatriculata in...

Certificat fiscal auto

[CUM] Cum ati fi reactionat in ac...

Credex și altex fara dobanda
 schimbare nume familie copil

Problema mașina de spalat ve...

Ajutor incepator

Preturile https://www.colins.ro/ ...
 LP - One Last Time

1 Decembrie 2022 - topic pentru d...

Sfat achizitie sistem audio amfit...

De la ce vine "de la"?
 

Problema DirectX - Referinta DirectSound.dll

- - - - -
  • Please log in to reply
11 replies to this topic

#1
Dj_Eagle

Dj_Eagle

    Member

  • Grup: Members
  • Posts: 243
  • Înscris: 12.04.2007
Salutare!
Am o problema cu proiectul meu.

Sa vi-l descriu putin: trebuie sa fac o aplicatie care reda fisiere audio (mp3 / wav). Nimic special pana acum. Ideea este ca sunetul va trebui redat printr-un canal auxiliar, nu cel default (Speakers). Pentru a crea dispozitive audio, folosesc Virtual Audio Cable. Asadar, am nevoie ca programul meu sa redea sunetul prin una din liniile VAC. Evident, inainte de asta, va trebui sa listeze toate dispozitivele audio disponibile.

Am reusit sa gasesc ceva referinte si proiecte care ma pot ajuta sa-mi termin proiectul. M-am documentat, si am ales sa folosesc DirectSound (DirectX); alte optiunii fiind NAudio si BASS.

Problema este ca de fiecare data cand declar o variabila ce contine o referinta DirectX, programul se blocheaza (daca-l rulez compilat), iar daca-l rulez din VisualStudio, primesc aceasta eroare: "An error occurred creating the form. See Exception.InnerException for details. The error is:  is not a valid Win32 application." sau compileaza aplicatia, dar dupa ce o ruleaza VisualStudio "sta degeaba" iar daca dau click pe fereastra imi apare un mesaj "Delay Notification. Alte ori, primesc aceasta eroare: "An error occurred creating the form. See Exception.InnerException for details.  The error is: Mixed mode assembly is built against version 'v1.1.4322' of the runtime and cannot be loaded in the 4.0 runtime without additional configuration information."

Va las o portiune de cod, cea care trebuie sa listeze dispozitivele audio:
'
Imports Microsoft.DirectX
Imports Microsoft.DirectX.DirectSound
'
Public Class Form1
'
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
	 '
	 Dim Dispozitive As New Microsoft.DirectX.DirectSound.DevicesCollection
	 Dim locatie As Integer
	 '
	 For locatie = 0 To Dispozitive.Count - 1
		 ListBox1.Items.Add(Dispozitive(locatie).Description)
	 Next
	 '
End Sub
'
End Class
'


Aveti idee care ar putea fi problema? Am incercat pe diferite PC-uri, toate cu DirectX (si SDK).

Edited by Dj_Eagle, 12 November 2014 - 21:00.


#2
just0rz

just0rz

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 14.01.2014
Va trebui sa adaugi in app.config: useLegacyV2RuntimeActivationPolicy = true

Ceva de genul:
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>


#3
Dj_Eagle

Dj_Eagle

    Member

  • Grup: Members
  • Posts: 243
  • Înscris: 12.04.2007
In App.config eu aveam:
	<startup>
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
	</startup>


Am pus cum mi-ai spus tu:
	<startup useLegacyV2RuntimeActivationPolicy="true">
		<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
	</startup>


Acum, la debug imi spune asta:
LoaderLock was detected
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.


#4
just0rz

just0rz

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 14.01.2014
Ai instalat SDK-ul?

#5
just0rz

just0rz

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 14.01.2014
Din ce am inteles ar fii un known issue

Quote

What version of DirectX SDK are you using?
Which line of code in your application causes this exception?
Firstly, Managed debugging assistants (MDAs) are debugging aids that work
in conjunction with the common language runtime (CLR) to provide
information on runtime state. The LoaderLock MDA detects attempts to
execute managed code on a thread that holds the Microsoft Windows operating
system loader lock.
I serached in our internal database and found a similar case in it. In that
case, the customer created a Windows application using managed DirectX SDK
and got LoaderLock MDA error when debugging on the following line of code:
Dim x as microsoft.directx.directsound.device
It was confirmed a known issue of managed DirectX and it hasn't been fixed
so far. However, this problem only exists when debugging application in VS
IDE. The temporary workaround is to turn off the LoaderLock MDA. To do
this, select menu Debug | Exceptions. In the Exception dialog, expand the
Managed Debugging Assistants node and clear the checkbox under the Thrown
column of the LoaderLock node.
Hope this helps.
If you have any concern, please feel free to let me know.
Sincerely,
Linda Liu
Microsoft Online Community Support

Deci cred ca poti sa ignori daca nu ti se blocheaza in "Release" mode.

EDIT: pentru mai multe detalii http://msdn.microsof...y/ms172219.aspx

Edited by just0rz, 13 November 2014 - 15:43.


#6
Dj_Eagle

Dj_Eagle

    Member

  • Grup: Members
  • Posts: 243
  • Înscris: 12.04.2007
Da, SDK-ul l-am instalat. Acesta mai exact: DXSDK_Jun10 Link: http://www.microsoft...ls.aspx?id=6812
Mi-am facut griji la inceput pentru ca mi-a dat o eroare spunandu-mi ca toate fisierele au fost instalat cu succes, cu exceptia unor pachete redistributable. Asta pentru ca aveam ceva programe deschise ce foloseau C++, dar sunt sigur ca asta nu e o problema.

Am citit si eu putin despre Legacy V2 Runtime Activation Policy si loaderLock MDA pe MSDN si alte forumuri. Sincer mi se pare o prostie pentru ca nu se ocupa de acest "bug" cunoscut.

Oricum, am facut exact ce a sugerat Linda Liu si anume:
The temporary workaround is to turn off the LoaderLock MDA. To do
this, select menu Debug | Exceptions. In the Exception dialog, expand the
Managed Debugging Assistants node and clear the checkbox under the Thrown
column of the LoaderLock node.

Si a functionat!

Iti multumesc foarte mult pentru ajutor! :) I owe you one.
Lasa-mi te rog un link catre acelt post citat mai sus. :D

Edited by Dj_Eagle, 13 November 2014 - 17:47.


#7
just0rz

just0rz

    Junior Member

  • Grup: Members
  • Posts: 146
  • Înscris: 14.01.2014
Nu mai am link-ul din pacate

#8
Dj_Eagle

Dj_Eagle

    Member

  • Grup: Members
  • Posts: 243
  • Înscris: 12.04.2007
Am intampinat alta problema. Era de asteptat; repari una, apar alte 2...

Problema cu listarea dispozitivelor audio am rezolvat-o.
Acum, incerc sa fac playerul care sa redea sunetul prin diferite canale.

Si imi da urmatoarea eroare la rulare:
Spoiler

Si este ciudat, nu imi da aceeasi eroare ca in cazul aplicatiei de preluare a disp. audio.
Dar, daca adaug o variabila din DirectSound (de ex: Private Dev1 As New Device) apare eroarea care am lasat-o in spoilerul de mai sus. Daca rulez aplicatia fara acea variabila declarata, porneste fara alte figuri. Posted Image

Las aici proiectul, poate ajuta:
Attached File  DirectSound VB.rar   131.16K   2 downloads

Edited by Dj_Eagle, 13 November 2014 - 18:40.


#9
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 29,245
  • Înscris: 24.02.2007
Assembly'urile folosite sunt ANTICE (de pe vremea .net 1)
Incearca http://www.slimdx.org/

#10
Dj_Eagle

Dj_Eagle

    Member

  • Grup: Members
  • Posts: 243
  • Înscris: 12.04.2007
Am rezolvat! Posted Image
Functioneaza totul acum.

Va las codul susra aici: Attached File  DirectX Sound.rar   186.91K   2 downloads

Dar nu stiu cum sa fac urmatoarele:
- Redarea fisierelor MP3 (nu ma refer la OpenDialog, acolo pot adauga filtru pentru mp3, dar primesc o eroare cand incerc sa incarc in buffer calea catre fisierul mp3)
- Golirea memoriei (Dispose). Daca tot incarc fisiere wav, se umple RAM-ul repejor. Am incercat cu Player1.Dispose dar asta nu ma ajuta.
- Timp. Vreau sa gasesc timpul total al melodiei. Pentru a prelua pozitia curenta a playerului, pot folosi un Player1.PlayPosition dar imi da o valoare ciudata din buffer.
- Seeker. Dupa ce preiau timpul total si cel curent, sa pot muta potizia curenta in buffer. Pentru asta cred ca va trebui folosita Player1.SetCurrentPosition

#11
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 29,245
  • Înscris: 24.02.2007
Folosesti pana la urma DirectSound sau un player gata facut?
Lui DirectSound ii tot dai sa cante diverse buffere, pe care le gestionezi cum vrei in memorie.

#12
Dj_Eagle

Dj_Eagle

    Member

  • Grup: Members
  • Posts: 243
  • Înscris: 12.04.2007

View Postdani.user, on 17 noiembrie 2014 - 22:03, said:

Folosesti pana la urma DirectSound sau un player gata facut?
Lui DirectSound ii tot dai sa cante diverse buffere, pe care le gestionezi cum vrei in memorie.

Folosesc DirectSoound.
Da, momentan sunt doar 2 buffere (Player1 si Player2). Pe care le pot controla fara probleme.
Dar ce nu inteleg e cum sa fac ce am mentionat mai sus:

View PostDj_Eagle, on 17 noiembrie 2014 - 21:54, said:

Dar nu stiu cum sa fac urmatoarele:
- Redarea fisierelor MP3 (nu ma refer la OpenDialog, acolo pot adauga filtru pentru mp3, dar primesc o eroare cand incerc sa incarc in buffer calea catre fisierul mp3)
- Golirea memoriei (Dispose). Daca tot incarc fisiere wav, se umple RAM-ul repejor. Am incercat cu Player1.Dispose dar asta nu ma ajuta.
- Timp. Vreau sa gasesc timpul total al melodiei. Pentru a prelua pozitia curenta a playerului, pot folosi un Player1.PlayPosition dar imi da o valoare ciudata din buffer.
- Seeker. Dupa ce preiau timpul total si cel curent, sa pot muta potizia curenta in buffer. Pentru asta cred ca va trebui folosita Player1.SetCurrentPosition

Edited by Dj_Eagle, 17 November 2014 - 22:06.


Anunturi

Chirurgia cranio-cerebrală minim invazivă Chirurgia cranio-cerebrală minim invazivă

Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne.

Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate