Domanda

sto costruendo un'applicazione e utilizzando la libreria x264 come encoder. Ho costruito la libreria per il mio sistema di Windows utilizzando MSys / MinGW. La multa libreria funziona sotto build di debug (nota sia il debug e release si basa stanno usando il default VS2010 impostazioni). Tuttavia, sotto il rilascio di un errore di violazione di accesso è gettato alla prima chiamata alla libreria x264, in particolare:

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

L'errore è gettato in questa linea:

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

Mentre stavo cercando di capire come compilare la libreria mi sono imbattuto in un gran parlare di allineamento memoria in Windows / visivi Studios e come non era particolarmente compatibile con l'allineamento atteso da x264. Per esempio quando si compila in MSys ho dovuto consentire --enable-memalign-hack. Mi chiedo se l'origine di questo errore potrebbe derivare da un problema di allineamento di memoria che si manifesta solo attraverso una certa regolazione nel mio build di rilascio. Purtroppo so quasi nulla sulle specifiche e così sono venuto qui.

qualcuno può darmi qualche informazione in più per quanto riguarda i problemi di allineamento della memoria e le impostazioni di Visual Studio che potrebbe causare questo? Eventuali altri suggerimenti / puntatori per risolvere questo problema sono i benvenuti.

Grazie.

Modifica

Da risposta qui sotto:

  1. Dal legata domanda SO Ho l'impressione, ha aggiunto "costruire con info debugger" per la build OpenCV? Dal momento che sto costruendo la biblioteca x264 attraverso MSys con G ++ io non sono sicuro di poter fare questo. Ho controllato le impostazioni di generazione per il mio progetto, e sotto entrambi rilascio e di debug ha informazioni debugger. Non sono sicuro se ho perso qualcosa in questo post, per favore fatemelo sapere.
  2. Ho provato l'applicazione verificatore. Sembra che x264 sta cercando di eseguire codice da memoria non eseguibile come per l'App verificatore uscita:

    VERIFIER STOP 0000000000000650: pid 0x1B18: 
    

    Tentativo di eseguire codice nella memoria non eseguibile (prima possibilità).

    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.
    

Tutto ciò per essere raccolti da questa uscita?

Grazie ancora.

È stato utile?

Soluzione

Fare riferimento a un problema simile qui , vedere se questo ti aiuta anche.

Modifica

Post che anche voi volete eseguire l'applicazione attraverso AppVerifier

Modifica

A mio parere rilascio "Costruire con le informazioni di debug" è pari a accendere l'interruttore -g insieme a opzioni di ottimizzazione e spegnendo qualsiasi macro DEBUG. Anche se si debugger (uso Gflags ) per avviare il processo con debugger (prendere una copia di WinDbg e l'uso che per eseguire il debug).

Quando l'Appverifer interrompe l'utilizzo processo .cxr comando per ottenere informazioni di contesto. Questo dovrebbe aiutare a sottolineare il problema.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top