gpt4 book ai didi

c++ - 对 swscale 函数的 undefined reference

转载 作者:太空宇宙 更新时间:2023-11-04 01:02:16 24 4
gpt4 key购买 nike

我的应用程序根本无法链接到 swscale 库。我的意思是我试图在我的代码中使用的任何 swscale 方法都变成了 undefined reference 。我知道这个错误是什么意思 - 链接器找不到任何已用函数的定义。

但问题是我确保:

  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++ 代码时您需要 extern "C" 围绕 ffmpeg #include 语句(参见 FAQ ):

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

同样适用于所有其他 ffmpeg 包含。

关于c++ - 对 swscale 函数的 undefined reference ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33841953/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com