![]() |
Chirurgia spinală minim invazivă
Chirurgia spinală minim invazivă oferă pacienților oportunitatea unui tratament eficient, permițându-le o recuperare ultra rapidă și nu în ultimul rând minimizând leziunile induse chirurgical. Echipa noastră utilizează un spectru larg de tehnici minim invazive, din care enumerăm câteva: endoscopia cu variantele ei (transnazală, transtoracică, transmusculară, etc), microscopul operator, abordurile trans tubulare și nu în ultimul rând infiltrațiile la toate nivelurile coloanei vertebrale. www.neurohope.ro |
Problema DirectX - Referinta DirectSound.dll
Last Updated: Nov 17 2014 22:06, Started by
Dj_Eagle
, Nov 12 2014 20:59
·
0

#1
Posted 12 November 2014 - 20:59

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
Posted 13 November 2014 - 11:43

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
Posted 13 November 2014 - 13:17

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. |
#5
Posted 13 November 2014 - 15:35

Din ce am inteles ar fii un known issue
Citat 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
Posted 13 November 2014 - 17:27

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! ![]() Lasa-mi te rog un link catre acelt post citat mai sus. ![]() Edited by Dj_Eagle, 13 November 2014 - 17:47. |
#8
Posted 13 November 2014 - 18:20

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. ![]() Las aici proiectul, poate ajuta: ![]() Edited by Dj_Eagle, 13 November 2014 - 18:40. |
#9
Posted 13 November 2014 - 23:53

#10
Posted 17 November 2014 - 21:54

Am rezolvat!
![]() Functioneaza totul acum. Va las codul susra aici: ![]() 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
Posted 17 November 2014 - 22:03

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
Posted 17 November 2014 - 22:06

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:
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
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users