2013-04-22 12 views
7

Sto cercando di utilizzare alcune funzioni di ffmpeg e sto correndo in errori di linker resilienti. Ecco quello che ho fatto:Esterni non risolti che tentano di utilizzare ffmpeg

  • scaricato l'ultima a 32 bit "Dev" costruire da http://ffmpeg.zeranoe.com/builds/ (cioè ffmpeg-20.130.418-git-ee94362-win32-dev)
  • creato un "Generale - vuoto" progetto C++ in visual Studio 2012 Premium
  • Aggiunto il [ffmpeg]/cartella lib di Linker -> ingresso -> "Ulteriori directory di libreria"
  • Aggiunto "swscale.lib; avutil.lib; avformat.lib; avdevice.lib; avcodec. lib;" a Linker -> ingresso -> "Dipendenze aggiuntive"
  • aggiunto il seguente punto C++ -> Generale -> Directory di inclusione aggiuntive:
    • [ffmpeg]/include
    • [ffmpeg]/include/libswscale
    • [ffmpeg]/include/libavformat

Questo è il mio main.cpp:

#include "avformat.h" 

int main() 
{ 
    av_register_all(); 
} 

questo viene a mancare con:

errore LNK2019: simbolo esterno non risolto "vuoto __cdecl av_register_all (void)" (av_register_all @@ YAXXZ?) Si fa riferimento in funzione _main

Come posso risolvere questo errore?

+0

Eventuali duplicati di [http://stackoverflow.com/q/7514249/845568](http : //stackoverflow.com/q/7514249/845568) –

risposta

22

Come stai usando C++, è necessario circondare il vostro ffmpeg #include dichiarazioni con extern "C" come questo:

extern "C" 
{ 
    #include "avformat.h" 
} 
+3

Ugh, in realtà l'avevo già provato e non ha funzionato, probabilmente a causa di qualche altro errore nel progetto. Ora funziona ... grazie. – Asik

+0

Grazie! Presumo che questo fa sì che cerchi le versioni "C" non decorate dei simboli invece dei simboli C++ decorati? – Deanna

+0

@Deanna Sì, è assolutamente giusto. Sono contento che tu abbia trovato la risposta utile. –

Problemi correlati