Laden...

Fehlermeldung bei dll-Einbindung

Erstellt von RonnyW vor 16 Jahren Letzter Beitrag vor 16 Jahren 1.187 Views
R
RonnyW Themenstarter:in
154 Beiträge seit 2007
vor 16 Jahren
Fehlermeldung bei dll-Einbindung

hallo @ all,

ich hab folgendes Problem:
in dem Programm, welches ich weiterentwickeln soll, musste ich die Microsoft.DirectX.dll und die Microsoft.DiretX.DirectSound.dll einbinden, hab ich auch gemacht.

Jetzt ist das Probelm, dass bei jedem Start im DebugModus folgende Fehlermeldung in folgender Zeile auftritt:

siehe Anhang

so, nun weiß ich ja, dass dies eigentlich eine Microsoft Fehlermeldung ist und dachte mir, da such ich doch mal bei denen nach ner Lösung... Pustekuchen...

da bekam ich unter folgendem Link nur diese "Lösung":

Link: http://msdn2.microsoft.com/de-de/library/ms172219(VS.80).aspx

Lösung:
Untersuchen Sie die Stapelüberwachung für den Thread, der diesen MDA aktiviert hat. Der Thread versucht ungültigerweise, einen Aufruf in den verwalteten Code durchzuführen, während er die Sperre des Betriebssystemladeprogramms hält. Wahrscheinlich wird auf dem Stapel DllMain oder ein entsprechender Einstiegspunkt einer DLL angezeigt. Die Regeln des Betriebssystems schränken die gültigen Vorgänge nach Erreichen des Einstiegspunkt relativ stark ein. Diese Regeln schließen jede Ausführung von verwaltetem Code aus.

Schön, das ist ne Menge Text von Microsoft, sagt aber überhaupt nichts über das Problem und vorallem über dessen Lösung aus.

Daher wollte ich fragen, ob mir jemand mit der Problemlösung weiterhelfen kann.

Danke

Nachtrag:
Folgender Text steht noch oben in der Fehlermeldung drin:

Die DLL "C:\Windows\assembly\GAC\Microsoft.DirectX\1.0.2902.0__31bf3856ad364e35\Microsoft.DirectX.dll" unternimmt einen Versuch, innerhalb der Sperre für den OS-Loader eine verwaltete Ausführung durchzuführen. Versuchen Sie nicht, verwalteten Code innerhalb einer DllMain- oder Bildinitialisierungsfunktion auszuführen, da dies ein Hängen der Anwendung zur Folge haben kann.

RonnyW :evil:

R
RonnyW Themenstarter:in
154 Beiträge seit 2007
vor 16 Jahren

so habe jetzt zwar viel im Forum gefunden, jedoch immer nur, dass man diese Exception ausblenden soll...

des weiteren habe ich aber auch gelesen, dass dies zwar die Exception unterdrückt, jedoch nicht behebt...

habe sie nun mal ausgeblendet und nun das...

siehe Anhang

und in der angegebenen Zeile steht folgendes:


        void InitNotifications()
        {
            if (applicationBuffer == null)
            {
                throw new NullReferenceException();
            }

            //Create a Thread to monitor the notify events
            if (NotifyThread == null)
            {
                NotifyThread = new Thread(new ThreadStart(WaitThread));
                Capturing = true;
                NotifyThread.Start();

                //Create a notification event, for when sound stops playing
                NotificationEvent = new AutoResetEvent(false);
            }

            for (int i = 0; i < NumberRecordNotification; i++)
            {
                PositionNotify[i].Offset = (NotifySize * i) + NotifySize - 1;
                PositionNotify[i].EventNotifyHandle = NotificationEvent.Handle;
            }

            applicationNotify = new Notify(applicationBuffer);

            //Tell DirectSound when to notify the app. The Notification will come in the front
            //of signaled events that are handled in the notify thread.
            applicationNotify.SetNotificationPositions(PositionNotify, NumberRecordNotification);
        }

        private void WaitThread()
        {
            while (Capturing)
            {
                NotificationEvent.WaitOne(Timeout.Infinite, true);
                RecordCapturedData();
            }
        }

also um genau zu sein steht in der angegebenen Zeile


NotificationEvent.WaitOne(Timeout.Infinite, true);

RonnyW :evil:

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo RonnyW,

Bilder bitte anhängen, nicht verlinken.

herbivore

183 Beiträge seit 2004
vor 16 Jahren

Hallo RonnyW,

[Hinweis] Syntaxfehler selbst lösen (Compilerfehlermeldungen)

Du startest den Thread, bevor du dein NotificationEvent initalisiert hast ...


NotificationEvent = new AutoResetEvent(false);
// ...
NotifyThread.Start();

sollte Abhilfe schaffen ...

So einfach wie möglich, aber nicht einfacher. [Albert Einstein]

take a look at
* baer-torsten.de
* codinghints

R
RonnyW Themenstarter:in
154 Beiträge seit 2007
vor 16 Jahren

bedeutet das... das ich erst


NotificationEvent = new AutoResetEvent(false);

und dann erst


NotifyThread = new Thread(new ThreadStart(WaitThread));
                Capturing = true;
                NotifyThread.Start();

machen muss?

ehrlich gesagt hab ich das aus einem example von microsoft zu DirectSound und da steht das genau so drin, funzt bei denen komischer weise auch, nur bei mir nicht...

RonnyW :evil:

R
RonnyW Themenstarter:in
154 Beiträge seit 2007
vor 16 Jahren

ok ich danke euch, es scheint momentan zu funktionieren 😁

danke

RonnyW :evil:

183 Beiträge seit 2004
vor 16 Jahren

Genau.

Hast du einen Link zum Beispiel?

So einfach wie möglich, aber nicht einfacher. [Albert Einstein]

take a look at
* baer-torsten.de
* codinghints

R
RonnyW Themenstarter:in
154 Beiträge seit 2007
vor 16 Jahren

ehm wie ein link-beispiel, was meinst genau?

RonnyW :evil:

R
RonnyW Themenstarter:in
154 Beiträge seit 2007
vor 16 Jahren

ich hab eigentlich jetzt nur die einze zeile verschoben, wie du es gesagt hast...
und dann gings schon

RonnyW :evil:

183 Beiträge seit 2004
vor 16 Jahren

Original von RonnyW
ehrlich gesagt hab ich das aus einem example von microsoft zu DirectSound und da steht das genau so drin, funzt bei denen komischer weise auch, nur bei mir nicht... example (engl.) == Beispiel (deutsch) 8)
Den Link, wo ich das nachlesen kann 😉

So einfach wie möglich, aber nicht einfacher. [Albert Einstein]

take a look at
* baer-torsten.de
* codinghints

R
RonnyW Themenstarter:in
154 Beiträge seit 2007
vor 16 Jahren

achso...

ehm... das war wo ich die DirectX-SDK runter geladen hab, da ist das mit drin...

http://www.microsoft.com/downloads/details.aspx?familyid=529F03BE-1339-48C4-BD5A-8506E5ACF571&displaylang=en

wenn du die SDk installierst findest du dann unter

C:\Programme\Microsoft DirectX SDK (August 2007)\Samples\Managed\DirectSound\CaptureSound\CaptureSound_2005.sln

das fertige Programm von Microsoft

RonnyW :evil: