繁体   English   中英

未定义对swscale函数的引用

[英]Undefined references to swscale functions

我的应用程序根本无法链接到swscale库。 我的意思是,我要在代码中尝试使用的任何swscale方法都将成为未定义的引用。 我知道此错误的含义-链接器找不到所用函数的任何定义。

但是问题是我确保:

  1. -L/usr/local/Cellar/ffmpeg/2.8.2/lib -lswscale在链接器输出中,并且链接器实际上找到了lib,否则它将抱怨缺少swscale
  2. 该库确实存在:

    $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
  1. 该库具有正确的体系结构:

    $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
  1. 这些符号存在于二进制文件中,例如:

    $nm /usr/local/Cellar/ffmpeg/2.8.2/lib/libswscale.3.1.101.dylib | grep sws_alloc_context

输出:

000000000004e3b4 T _sws_alloc_context
  1. 我还尝试了几种不同的swscale二进制文件,不仅是“ brew”二进制文件,而且没有任何变化。 我也尝试在Ubuntu笔记本电脑上执行相同的操作,但仍然相同。

这实际上是我要构建的QT应用程序。 我应该提到,以相同的方式链接其他库没有问题。 我还使用以下命令成功编译了swscale-test.c (在libwscale源码中):

clang swscale-test.c -lswscale -lavutil

您有什么想法是错误的还是我还能尝试找出原因吗?

您没有显示代码,但是通常的问题是,在编译c ++代码时,需要在ffmpeg #include语句周围加上extern "C" (请参阅FAQ ):

extern "C" {
#include "libswscale/swscale.h"
}

所有其他ffmpeg包含内容也是如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM