无法为我自己的Qt项目链接ffmpeg库

无法为我自己的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文件:

编辑:问题已解决(见底部)

我花了很多时间寻找我的问题的解决方案,但没有成功。我在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>
}