无法为我自己的Qt项目链接ffmpeg库
编辑:问题已解决(见底部) 我花了很多时间寻找我的问题的解决方案,但没有成功。我在OSX上,试图将ffmpeg链接到我自己的Qt项目。我尝试过做最简单的事情,但即使这样也不行: 在安装了yasm和x264之后,我运行了 ./configure--enable static--enable gpl--enable-libx264,然后 制作和制作安装(&M) 当我尝试在命令行上运行ffmpeg时,它运行良好。然后,我在ffmpeg目录中设置了一个简单的项目,其中包含以下ffmpeg.pro文件:无法为我自己的Qt项目链接ffmpeg库,qt,ffmpeg,static-linking,Qt,Ffmpeg,Static Linking,编辑:问题已解决(见底部) 我花了很多时间寻找我的问题的解决方案,但没有成功。我在OSX上,试图将ffmpeg链接到我自己的Qt项目。我尝试过做最简单的事情,但即使这样也不行: 在安装了yasm和x264之后,我运行了 ./configure--enable static--enable gpl--enable-libx264,然后 制作和制作安装(&M) 当我尝试在命令行上运行ffmpeg时,它运行良好。然后,我在ffmpeg目录中设置了一个简单的项目,其中包含以下ffmpeg.pro文件:
TEMPLATE = app
QT += core
INCLUDEPATH += /usr/local/include
LIBS += -L/usr/local/lib
LIBS += -lavdevice -lavfilter -lavformat -lavcodec -lpostproc -lswresample -lswscale -lavutil -lpthread -lbz2 -lm -lz -lx264
HEADERS += ffmpeg.h
SOURCES += ffmpeg.c
我不确定是否需要所有这些库,但它们都是ffmpeg创建的.a文件。当我尝试按原样构建项目时,出现以下链接器错误:
g++-headerpad_max_install_names-arch x86_64-Xarch_x86_64-mmacosx version min=10.5-o ffmpeg.app/Contents/MacOS/ffmpeg-ffmpeg.o-F/Users/dtamayo/QtSDK/Desktop/Qt/4.8.1/gcc/QtSDK/Desktop/Qt/4.8.1/gcc/lib-L/usr/local/lib-lavdevice-lavfilter-lavformat-lavcodec-lpost-proc-lsvule-lsvul-lsv线程示例-lbz2-lm-lz-lx264-框架QtGui-L/usr/local/pgsql/lib-L/tmp/qt-stuff-85167/source/qt-everywhere-opensource-src-4.8.1/Desktop/qt/4.8.1/gcc/lib-F/tmp/qt-stuff-85167/source/qt-everywhere-opensource-src-4.8.1/gcc/lib-framework-QtCore
ld:警告:找不到选项'-L/usr/local/pgsql/lib'的目录
ld:警告:找不到选项'-L/tmp/qt-stuff-85167/source/qt-everywhere-opensource-src-4.8.1/Desktop/qt/4.8.1/gcc/lib'的目录
ld:警告:找不到选项'-F/tmp/qt-stuff-85167/source/qt-everywhere-opensource-src-4.8.1/Desktop/qt/4.8.1/gcc/lib'的目录
架构x86_64的未定义符号:
“音频同步方法”,引用自:
_在ffmpeg.o中写入_帧
_在ffmpeg.o中进行音频输出
“音频音量”,引用自:
_ffmpeg.o中的转码_init
“\u cmdutils\u read\u文件”,引用自:
_ffmpeg.o中的转码_init
“_configure_filtergraph”,引用自:
_在ffmpeg.o中解码_音频
_在ffmpeg.o中解码_视频
_ffmpeg.o中的转码_init
“\u copy\u tb”,引用自:
_ffmpeg.o中的转码_init
“副本”,引用自:
_在ffmpeg.o中处理输入
“调试”,引用自:
_在ffmpeg.o中写入_帧
_在ffmpeg.o中进行音频输出
_在ffmpeg.o中输出视频
_在ffmpeg.o中解码_视频
_在ffmpeg.o中处理输入
“_do_基准”,参考自:
_ffmpeg.o中的ffmpeg_清理
_ffmpeg.o中的main
“\u do\u benchmark\u all”,引用自:
_更新ffmpeg.o中的_基准
“_do_hex_dump”,引用自:
_检查ffmpeg.o中的键盘交互
_在ffmpeg.o中处理输入
“_do_pkt_dump”,引用自:
_检查ffmpeg.o中的键盘交互
_在ffmpeg.o中处理输入
“\u dts\u delta\u阈值”,引用自:
_在ffmpeg.o中处理输入
“\u dts\u错误\u阈值”,引用自:
_在ffmpeg.o中输出视频
_在ffmpeg.o中处理输入
“错误时退出”,引用自:
_在ffmpeg.o中写入_帧
_在ffmpeg.o中添加字幕吗
_在ffmpeg.o中处理输入
“退出程序”,引用自:
_ffmpeg.o中的sigterm_处理程序
_断言ffmpeg.o中的默认值
_在ffmpeg.o中中止编解码器
_在ffmpeg.o中写入_帧
_在ffmpeg.o中进行音频输出
_在ffmpeg.o中添加字幕吗
_在ffmpeg.o中输出视频
...
“\u ffmpeg\u parse\u options”,引用自:
_ffmpeg.o中的main
“每个原始样本的帧位”,引用自:
_ffmpeg.o中的转码_init
“_iconv”,引用自:
_libavcodec.a(utils.o)中的avcodec_decode_subtitle2
“\u iconv\u close”,引用自:
_libavcodec.a(utils.o)中的avcodec_decode_subtitle2
_libavcodec.a(utils.o)中的avcodec_open2
“_iconv_open”,引用自:
_libavcodec.a(utils.o)中的avcodec_decode_subtitle2
_libavcodec.a(utils.o)中的avcodec_open2
“_init_simple_filtergraph”,引用自:
_ffmpeg.o中的转码_init
“_ist_in_filtergraph”,引用自:
_在ffmpeg.o中解码_音频
_在ffmpeg.o中解码_视频
“_选项”,引用自:
_ffmpeg.o中的main
(也许你的意思是:_ff_mpv_generic_options,_ff_rawvideo_options,_av_set_options_string,_ff_rtsp_options)
“_parse_loglevel”,引用自:
_ffmpeg.o中的main
“解析时间或死亡”,引用自:
_解析ffmpeg.o中的\u强制\u关键帧
“打印错误”,引用自:
_在ffmpeg.o中写入_帧
_在ffmpeg.o中处理输入
“_print_stats”,引用自:
_以ffmpeg.o格式打印报告
“_qp_hist”,引用自:
_以ffmpeg.o格式打印报告
_检查ffmpeg.o中的键盘交互
“注册退出”,引用自:
_ffmpeg.o中的main
“_show_banner”,引用自:
_ffmpeg.o中的main
“\u显示\u用法”,引用自:
_ffmpeg.o中的main
“标准互动”,引用自:
_ffmpeg.o中的转码
“\u uninit\u opts”,引用自:
_ffmpeg.o中的ffmpeg_清理
“视频同步方法”,引用自:
_在ffmpeg.o中写入_帧
_在ffmpeg.o中输出视频
_ffmpeg.o中的转码_init
“_vstats_filename”,引用自:
_ffmpeg.o中的ffmpeg_清理
_在ffmpeg.o中输出视频
_在ffmpeg.o中进行视频统计
_ffmpeg.o中的flush_编码器
ld:找不到架构x86_64的符号
collect2:ld返回了1个退出状态
make:将目录`/Users/dtamayo/Desktop/ffmpeg-build-Desktop-Desktop\u Qt\u 4\u 8\u 1\u留给\u GCC\u Qt\u SDK\u调试'
make:[ffmpeg.app/Contents/MacOS/ffmpeg]错误1
14:35:42:进程“/usr/bin/make”已退出,代码为2。
生成项目ffmpeg时出错(目标:桌面)
执行生成步骤“Make”时
编辑:
非常感谢您的快速回复。我很难为情地说,在一位朋友的帮助下,我发现了这个问题,所以我将添加
extern "C"
{
#include <libavformat/avformat.h>
#include <libavcodec/avcodec.h>
#include <libswscale/swscale.h>
}