gpt4 book ai didi

linker - Libav链接错误: undefined references

转载 作者:行者123 更新时间:2023-12-01 19:15:47 24 4
gpt4 key购买 nike

这是我的问题:

  • 我从源代码(版本 1.2)构建了 ffmpeg,libav* 库位于/usr/local/lib 中,并且它们是静态的
  • 我正在编译 ns3 (www.nsnam.org) 模块,因此我对链接器的唯一控制是通过环境变量 LINKFLAGS
  • 在源代码中, header 位于“extern C” block 中,因此这不是通常的 g++ 名称修改
  • 我设置 LINKFLAGS="-I/usr/local/include/libavformat -I/usr/local/include/libavcodec -I/usr/local/include/libavutil -L/usr/local/lib -lavformat -lavcodec -lavutil”,并且链接器似乎找不到我调用的任何 libav* 函数(我收到很多“ undefined reference ”,然后是“collect2:错误:ld 返回状态 1”

有人可以帮助我吗?谢谢...

编辑:以下是一些未定义的引用消息:

    ./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_guess_format'
./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_read_frame'
./libns3.14.1-qoe-monitor-debug.so: undefined reference to `avformat_write_header'
./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_interleaved_write_frame'
./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_find_stream_info'
./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_register_all'
./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_init_packet'
./libns3.14.1-qoe-monitor-debug.so: undefined reference to `avformat_alloc_context'
./libns3.14.1-qoe-monitor-debug.so: undefined reference to `av_dump_format'
./libns3.14.1-qoe-monitor-debug.so: undefined reference to `avio_close'

edit2:这是我在“构建失败”后收到的消息:

-> task in 'scratch-simulator' failed (exit status 1): 
{task 53952272: cxxprogram scratch-simulator.cc.1.o -> scratch-simulator}
['/usr/bin/g++', '-I/usr/local/include/libavcodec', '-I/usr/local/include/libavformat/',
'-I/usr/local/include/libavutil/', '-L/usr/local/lib', '-I/usr/local
/include/libavcodec', '-I/usr/local/include/libavformat/', '-I/usr/local/include
/libavutil/', '-L/usr/local/lib', '-pthread', '-pthread', '-Wl,-z,relro',
'scratch/scratch-simulator.cc.1.o', '-o', '/home/fede/Thesis/ns-allinone-3.14.1
/ns-3.14.1/build/scratch/scratch-simulator', '-Wl,-Bstatic', '-Wl,-Bdynamic',
'-Wl,--no-as-needed', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.',
'-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.',
'-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.', '-L.',
'-L.', '-L.', '-L.', '-L.', '-L.', '-L/usr/lib', '-lns3.14.1-test-debug', '-lns3.14.1-
csma-layout-debug', '-lns3.14.1-point-to-point-layout-debug', '-lns3.14.1-netanim-
debug', '-lns3.14.1-lte-debug', '-lns3.14.1-spectrum-debug', '-lns3.14.1-antenna-
debug', '-lns3.14.1-aodv-debug', '-lns3.14.1-dsdv-debug', '-lns3.14.1-dsr-debug',
'-lns3.14.1-mesh-debug', '-lns3.14.1-olsr-debug', '-lns3.14.1-csma-debug', '-lns3.14.1-
wimax-debug', '-lns3.14.1-applications-debug', '-lns3.14.1-virtual-net-device-debug',
'-lns3.14.1-uan-debug', '-lns3.14.1-energy-debug', '-lns3.14.1-flow-monitor-debug',
'-lns3.14.1-nix-vector-routing-debug', '-lns3.14.1-tap-bridge-debug', '-lns3.14.1-
visualizer-debug', '-lns3.14.1-internet-debug', '-lns3.14.1-bridge-debug', '-lns3.14.1-
point-to-point-debug', '-lns3.14.1-mpi-debug', '-lns3.14.1-wifi-debug', '-lns3.14.1-
buildings-debug', '-lns3.14.1-propagation-debug', '-lns3.14.1-mobility-debug',
'-lns3.14.1-config-store-debug', '-lns3.14.1-tools-debug', '-lns3.14.1-stats-debug',
'-lns3.14.1-emu-debug', '-lns3.14.1-topology-read-debug', '-lns3.14.1-network-debug',
'-lns3.14.1-qoe-monitor-debug', '-lns3.14.1-core-debug', '-lrt', '-lgsl',
'-lgslcblas', '-lm', '-ldl', '-lgtk-x11-2.0', '-lgdk-x11-2.0', '-latk-1.0',
'-lgio-2.0', '-lpangoft2-1.0', '-lpangocairo-1.0', '-lgdk_pixbuf-2.0', '-lcairo',
'-lpango-1.0', '-lfreetype', '-lfontconfig', '-lgobject-2.0', '-lglib-2.0', '-lxml2',
'-lpython2.7']

最佳答案

这些库是 C 语言。库 header 不包含 extern "C"当编译为 C++ 时。在您的 C++ 源代码中执行此操作:

extern "C" { 
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}

或者,更一般地说,对于混合 C 和 C++ 源代码:

#ifdef __cplusplus
extern "C" {
#endif
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#ifdef __cplusplus
}
#endif

你应该没问题。

关于linker - Libav链接错误: undefined references,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15625468/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com