我的应用程序根本无法链接到swscale库。我的意思是,我尝试在代码中使用的任何swscale方法都将成为未定义的引用。我知道此错误的含义-链接器找不到所用函数的任何定义。
但是问题是我确保:
-L/usr/local/Cellar/ffmpeg/2.8.2/lib -lswscale
在链接器输出中,并且链接器实际上找到该库,否则它将抱怨丢失 swscale
该库确实存在:
$ll /usr/local/Cellar/ffmpeg/2.8.2/lib/libswscale*
输出:
-r--r--r-- 1 myuser admin 519K Nov 20 19:33 /usr/local/Cellar/ffmpeg/2.8.2/lib/libswscale.3.1.101.dylib
lrwxr-xr-x 1 myuser admin 24B Nov 20 19:32 /usr/local/Cellar/ffmpeg/2.8.2/lib/libswscale.3.dylib -> libswscale.3.1.101.dylib
-r--r--r-- 1 myuser admin 607K Nov 20 19:32 /usr/local/Cellar/ffmpeg/2.8.2/lib/libswscale.a
lrwxr-xr-x 1 myuser admin 24B Nov 20 19:32 /usr/local/Cellar/ffmpeg/2.8.2/lib/libswscale.dylib -> libswscale.3.1.101.dylib
该库具有正确的体系结构:
$lipo -info /usr/local/Cellar/ffmpeg/2.8.2/lib/libswscale.3.dylib
输出:
Non-fat file: /usr/local/Cellar/ffmpeg/2.8.2/lib/libswscale.3.dylib is architecture: x86_64
我的机器架构:
$uname -m
输出:
x86_64
这些符号存在于二进制文件中,例如:
$nm /usr/local/Cellar/ffmpeg/2.8.2/lib/libswscale.3.1.101.dylib | grep sws_alloc_context
输出:
000000000004e3b4 T _sws_alloc_context
这实际上是我要构建的QT应用程序。我应该提到,以相同的方式链接其他库没有问题。我还swscale-test.c
使用以下命令成功编译了(在libwscale源码中):
clang swscale-test.c -lswscale -lavutil
您有什么想法是错误的还是我还能尝试找出原因吗?
您没有显示代码,但是通常的问题是,extern "C"
在编译c ++代码时需要ffmpeg #include语句(请参阅FAQ):
extern "C" {
#include "libswscale/swscale.h"
}
所有其他ffmpeg包含内容也是如此。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句