我正在尝试编译程序但是得到奇怪的错误却不知道为什么。
> c++ src/main.cpp.o -o test -lavformat -lavcodec -lavdevice -lavutil -lswscale -lpthread
/usr/bin/ld: src/main.cpp.o: undefined reference to symbol 'avcodec_receive_packet@@LIBAVCODEC_57'
//usr/local/lib/libavcodec.so.57: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
但是当我发现/usr/local/lib/libavcodec.so.57
与nm
一起检查时,我得到了以下输出
> nm /usr/local/lib/libavcodec.so.57 | grep avcodec_receive_packet
0000000000630590 T avcodec_receive_packet
为什么c++
无法检测到avcodec_receive_packet
更新
由于我使用C
中的C++
,C
代码附带extern
关键字
extern "C" {
#include <libavutil/opt.h>
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libswscale/swscale.h>
#include <libavutil/imgutils.h>
}