C Windows上FFmpeg的链接器错误

C Windows上FFmpeg的链接器错误,c,gcc,ffmpeg,linker,windows-10,C,Gcc,Ffmpeg,Linker,Windows 10,我正在尝试将FFmpeg库链接到Windows上的C程序,但无法成功链接这些库。我从下载了Dev归档文件,并将其放入我的项目文件夹中。(编辑:64位版本)。编译工作得很好,但当我尝试链接库时,会出现一些未定义的引用错误。下面是我正在尝试的命令: gcc-o.\metadata.exe.\metadata.o-L.\ffmpeg-20170628-c1d1274-win64-dev\lib \-lavutil-lavformat-lavdevice-lavfilter-lavcodec-lswre

我正在尝试将FFmpeg库链接到Windows上的C程序,但无法成功链接这些库。我从下载了Dev归档文件,并将其放入我的项目文件夹中。(编辑:64位版本)。编译工作得很好,但当我尝试链接库时,会出现一些未定义的引用错误。下面是我正在尝试的命令:

gcc-o.\metadata.exe.\metadata.o-L.\ffmpeg-20170628-c1d1274-win64-dev\lib \-lavutil-lavformat-lavdevice-lavfilter-lavcodec-lswresample-lswscale-lm

然后它输出我:

\metadata.o:metadata.c:(.text+0x44):未定义对“av\U寄存器\U all”的引用
.\metadata.o:metadata.c:(.text+0x6c):未定义对“avformat\u open\u input”的引用
.\metadata.o:metadata.c:(.text+0xc8):未定义对“av_dict_get”的引用
.\metadata.o:metadata.c:(.text+0xdf):对“avformat\u close\u input”的未定义引用

路径是好的,因为如果我更改-libs参数或-L参数,我会得到文件未找到错误。最后,我从examples文件夹中的Makefile中获取了这些库

错误的来源是什么?提前谢谢,祝你有愉快的一天


编辑:好吧,我找到了问题所在。当我使用MinGW时,它包括一个32位编译器。所以当我下载64位时,有些东西坏了。我尝试下载32位构建,它仅使用-lavformat和-lavutil参数成功构建和链接。为了运行这个程序,我需要一个DLL,它可以在Zeranoe网站上的共享构建(当然是32位)中找到。谢谢

是否使用#ifdef uu cplusplus extern“C”{#endif包含头文件?加载或链接库的顺序也很重要(取决于静态或共享),因为它们需要引用来自其他ffmpeg库的依赖项。这是Qt Android项目的顺序:-lswscale-lswresample-lavutil-lavcodec-lavformat-lpostproc-lavfilterI使用Odroid(类似但比Pi更强大)使用android和linux,同时使用ffmpeg。这是一个很好的学习曲线。享受。CLI更易于使用,因为反馈是即时的,但我是一名程序员,我喜欢涉猎,让魔术发生:-)无论哪种方式,都是反复尝试。很高兴听到你让它工作起来。。。