我的应用根本无法链接到swscale库。我的意思是我尝试在我的代码中使用的任何swscale方法都成为未定义的引用。 我知道这个错误意味着什么 - 链接器找不到任何已使用函数的定义。
但问题是我确保:
-L/usr/local/Cellar/ffmpeg/2.8.2/lib -lswscale
在链接器输出中,链接器实际上找到了lib,否则会抱怨丢失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
您是否有任何想法有什么不对或我还能找到其他原因?
答案 0 :(得分:5)