2013-02-19 4 views
2

Я пытаюсь использовать FFmpeg, чтобы открыть и прочитать видео .avi Я работаю на win7 x64 с Visual Studio 2010LNK 2019 неразрешенный символ - FFmpeg

Для теперь мой код очень прост:

#include "libavcodec/avcodec.h" 
#include "libavformat/avformat.h" 
#include "SDL.h" 
#include "SDL_mixer.h" 


int main (int argc, char *argv[]) { 

AVFormatContext *pFile_video; 
int    s, videoStream; 
AVCodecContext *pCodecCtx; 
AVCodec   *pCodec; 
AVFrame   *pFrame; 
AVFrame   *pFrameRGB; 
AVPacket  packet; 
int    frameFinished; 
int    numBytes; 
uint8_t   *buffer; 

av_register_all(); 

    if((avformat_open_input(&pFile_video, "AR.avi", NULL,NULL)!=0)) cout <<"cannot open video file"<<endl; 
    //if(av_find_stream_info(pFile_video) <0) cout <<"cannot retrive stream information"<<endl; 

    videoStream =-1; 
    for(s=0; s<pFile_video->nb_streams;s++){ 
     if((pFile_video->streams[s]->codec->codec_type) == AVMEDIA_TYPE_VIDEO) videoStream =s; 
    } 
    if(videoStream ==-1) cout <<"cannot open video stream"<<endl; 

f(SDL_Init(SDL_INIT_EVERYTHING)< 0) cout<< "cannot initialize SDL subsystems"<<endl; 
    if(Mix_OpenAudio(22050,MIX_DEFAULT_FORMAT,2, 4096) <0) cout <<"error mixer audio"<<endl; 
    music = Mix_LoadMUS("AR.wav"); 
    if(music == NULL) {cout <<"error loading music "<<endl; 
} 

return 0; 
} 

Я связала следующие .lib файлы:

avcodec.lib 
avdevice.lib 
avfilter.lib 
avformat.lib 
avutil.lib 
postproc.lib 
swresample.lib 
swscale.lib 

, но я получаю эти ошибки:

>MSVCRTD.lib(cinitexe.obj) : warning LNK4098: la libreria predefinita 'msvcrt.lib' è in conflitto con l'utilizzo di altre librerie; utilizzare /NODEFAULTLIB:libreria 
1>main_video_ffmpeg.obj : error LNK2019: riferimento al simbolo esterno "int __cdecl avformat_open_input(struct AVFormatContext * *,char const *,struct AVInputFormat *,struct AVDictionary * *)" ([email protected]@[email protected]@[email protected]@[email protected]@@Z) non risolto nella funzione _SDL_main 
1>main_video_ffmpeg.obj : error LNK2019: riferimento al simbolo esterno "void __cdecl av_register_all(void)" ([email protected]@YAXXZ) non risolto nella funzione _SDL_main 
1>C:\Users\Cristina\Desktop\OpenCV\Progetti\MIEI_PROGETTI_Vs\video_ffmpeg\Debug\video_ffmpeg.exe : fatal error LNK1120: 2 esterni non risolti 

Я думаю, что это ошибка компоновщика .. но у меня нет другого .lib-файла для библиотеки FFmpeg.

ответ

2

Вы должны окружить FFmpeg включает в себя с экстерном "C"

extern "C" { 
     #include "libavcodec/avcodec.h" 
     #include "libavformat/avformat.h" 
     #include "SDL.h" 
     #include "SDL_mixer.h" 
    } 
+0

Я до сих пор та же проблема ... '1> main_video_ffmpeg.obj: ошибка LNK2019: riferimento аль Simbolo Esterno _avformat_open_input не risolto Nella funzione _SDL_main 1> main_video_ffmpeg.obj: ошибка LNK2019: riferimento аль Simbolo Esterno _av_register_all не risolto Нелла funzione _SDL_main 1> C: \ Users \ Cristina \ Desktop \ OpenCV \ Проджетти \ MIEI_PROGETTI_Vs \ video_ffmpeg \ Debug \ video_ffmpeg.exe: фатальная ошибка LNK1120: 2 esterni non risolti' – Cristina1986