我正在尝试将FFmpeg库链接到Windows上的C程序,但我无法成功链接这些库。我从Zeranoe下载了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): undefined reference to 'av_register_all'
.\metadata.o:metadata.c:(.text+0x6c): undefined reference to 'avformat_open_input'
.\metadata.o:metadata.c:(.text+0xc8): undefined reference to 'av_dict_get'
.\metadata.o:metadata.c:(.text+0xdf): undefined reference to 'avformat_close_input'
路径很好,因为如果我更改-libs参数或-L参数,我会找到找不到文件的错误。最后,我从示例文件夹中的Makefile中获取了这些库。
错误的来源是什么?提前谢谢,祝你有愉快的一天!
编辑:好的,我发现了什么问题。当我使用MinGW时,它包含一个32位编译器。因此,当我下载64位时,有些东西已关闭。我尝试下载32位版本,并使用-lavformat和-lavutil参数成功构建和链接。为了运行该程序,我需要在Zeranoe网站上的共享版本(当然还有32位)中找到的DLL。谢谢!