Frage

Ich baue eine Anwendung und mit der x264-Bibliothek als Encoder. Ich habe die Bibliothek für mein Windows-System mit MSys / MingW gebaut. Die Bibliothek arbeitet unter Debug-Build (beachten Sie sowohl Debug- und Release-Builds werden mit dem Standard VS2010-Einstellungen). unter Freisetzung wird jedoch eine Zugriffsverletzung Fehler beim ersten Aufruf der x264-Bibliothek geworfen, und zwar:

  Unhandled exception at 0x00905a4d in StreamTest.exe:
  0xC0000005: Access violation.

Der Fehler wird an dieser Linie geworfen:

x264_param_default_preset((params), "veryfast", "zerolatency");

Während ich herauszufinden, wie die Bibliothek kompilieren ich auf eine Menge Gerede über Speicherausrichtung kam in Windows / Visual-Studios und wie es mit der Ausrichtung nicht besonders kompatibel war von x264 erwartet. Zum Beispiel, wenn in MSys ich kompilieren hatte --enable-memalign-Hack zu aktivieren. Ich frage mich, ob die Quelle dieses Fehlers von einer Speicherausrichtung Ausgabe stammen könnte, die nur sich selbst in meinem Release-Build durch irgendeine Einstellung manifestiert. Leider weiß ich fast nichts über die Besonderheiten und haben so kommen hier.

Kann jemand geben Sie mir einige weitere Informationen in Bezug auf die Speicherausrichtungsprobleme und alle Visual Studio-Einstellungen, die dies verursachen könnten? Alle anderen Tipps / Hinweise Um dieses Problem zu beheben, sind sehr willkommen.

Danke.

Bearbeiten

Von Antwort unter:

  1. Von der SO Frage verknüpft ich den Eindruck, er „Build mit Debugger-Info“ auf die OpenCV Build hinzugefügt? Da ich die x264-Bibliothek durch MSys mit G baue ++ Ich bin sicher nicht, dass ich dies tun kann. Ich habe die Buildeinstellungen für mein Projekt überprüft und sowohl unter Freisetzung und debuggen Debugger info hat. Nicht sicher, ob ich etwas in diesem Beitrag verpasst haben, lassen Sie es mich wissen.
  2. habe ich versucht, die Anwendung Verifizierer. Es scheint, dass x264 Code auszuführen versucht, von nicht-ausführbaren Speicher gemäß dem App Verifier Ausgabe:

    VERIFIER STOP 0000000000000650: pid 0x1B18: 
    

    Versuchen Sie Code in nicht ausführbaren Speicher (erste Chance) auszuführen.

    0000000000905A4D : Address being accessed.
    0000000000905A4D : Code performing invalid access.
    000000000021EA90 : Exception record. Use .exr to display it.
    000000000021E5A0 : Context record. Use .cxr to display it.
    

Alles, was von diesem Ausgang gesammelt werden?

Vielen Dank noch einmal.

War es hilfreich?

Lösung

Siehe ein ähnliches Problem hier , wenn das Ihnen auch hilft.

EDIT

Post, dass Sie auch Ihre Anwendung durch AppVerifier laufen

EDIT

Meiner Meinung nach Release „Build with Debugger info“ Mengen an -g Schaltern zusammen mit der Optimierung wechselt zum Drehen und jede DEBUG Makro ausschalten. Auch wenn Sie Debugger angeschlossen (Verwendung Gflags ) Ihren Prozess mit Debugger (greifen eine Kopie windbg und verwenden, die debug).

zu starten

Wenn der Appverifer stoppt Ihren Prozess Verwendung .cxr Befehl Kontextinformationen zu erhalten. Das sollte das Problem helfen Hinweis.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top