Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ gcc:未定义的引用错误_C++_C_Gcc_Compiler Construction_Ffmpeg - Fatal编程技术网

C++ gcc:未定义的引用错误

C++ gcc:未定义的引用错误,c++,c,gcc,compiler-construction,ffmpeg,C++,C,Gcc,Compiler Construction,Ffmpeg,我想使用ffmpeg/libavfilter/lavfutils.h中定义的函数“ff_load_image” 程序.c #include "../ffmpeg/libavfilter/lavfutils.h" int main () { uint8_t* data; int linesize, width, height, log_ctx; int i = ff_load_image(&data, &linesize, &width, &hei

我想使用ffmpeg/libavfilter/lavfutils.h中定义的函数“ff_load_image”

程序.c

#include "../ffmpeg/libavfilter/lavfutils.h"

int main ()
{
  uint8_t* data;

  int linesize, width, height, log_ctx;

  int i = ff_load_image(&data, &linesize, &width, &height, AV_PIX_FMT_RGB24, "blue.jpg", &log_ctx);
}
运行

gcc -I$HOME/ffmpeg/include program.c -L$HOME/ffmpeg/lib -lavfilter -lavcodec -lavutil
给出未定义的引用错误

program.c: In function \u2018main\u2019:
program.c:9: warning: passing argument 1 of \u2018ff_load_image\u2019 from incompatible pointer type
../ffmpeg/libavfilter/lavfutils.h:39: note: expected \u2018uint8_t **\u2019 but argument is of type \u2018uint8_t *\u2019
program.c:9: warning: passing argument 2 of \u2018ff_load_image\u2019 makes pointer from integer without a cast
../ffmpeg/libavfilter/lavfutils.h:39: note: expected \u2018int *\u2019 but argument is of type \u2018int\u2019
program.c:9: warning: passing argument 3 of \u2018ff_load_image\u2019 makes pointer from integer without a cast
../ffmpeg/libavfilter/lavfutils.h:39: note: expected \u2018int *\u2019 but argument is of type \u2018int\u2019
program.c:9: warning: passing argument 4 of \u2018ff_load_image\u2019 makes pointer from integer without a cast
../ffmpeg/libavfilter/lavfutils.h:39: note: expected \u2018int *\u2019 but argument is of type \u2018int\u2019
program.c:9: warning: passing argument 5 of \u2018ff_load_image\u2019 makes pointer from integer without a cast
../ffmpeg/libavfilter/lavfutils.h:39: note: expected \u2018enum AVPixelFormat *\u2019 but argument is of type \u2018int\u2019
program.c:9: warning: passing argument 7 of \u2018ff_load_image\u2019 makes pointer from integer without a cast
../ffmpeg/libavfilter/lavfutils.h:39: note: expected \u2018void *\u2019 but argument is of type \u2018int\u2019
/home/jamiey/ffmpeg/lib/libavfilter.a(lavfutils.o): In function `ff_load_image':
/home/jamiey/ffmpeg/libavfilter/lavfutils.c:38: undefined reference to `av_register_all'
/home/jamiey/ffmpeg/libavfilter/lavfutils.c:40: undefined reference to `av_find_input_format'
/home/jamiey/ffmpeg/libavfilter/lavfutils.c:41: undefined reference to `avformat_open_input'
/home/jamiey/ffmpeg/libavfilter/lavfutils.c:66: undefined reference to `av_read_frame'
/home/jamiey/ffmpeg/libavfilter/lavfutils.c:92: undefined reference to `avformat_close_input'
/home/jamiey/ffmpeg/libavfilter/lavfutils.c:92: undefined reference to `avformat_close_input'
/home/jamiey/ffmpeg/libavfilter/lavfutils.c:92: undefined reference to `avformat_close_input'
/home/jamiey/ffmpeg/lib/libavcodec.a(frame_thread_encoder.o): In function `ff_frame_thread_encoder_free':
/home/jamiey/ffmpeg/libavcodec/frame_thread_encoder.c:225: undefined reference to `pthread_join'
/home/jamiey/ffmpeg/lib/libavcodec.a(frame_thread_encoder.o): In function `ff_frame_thread_encoder_init':
/home/jamiey/ffmpeg/libavcodec/frame_thread_encoder.c:200: undefined reference to `pthread_create'
/home/jamiey/ffmpeg/lib/libavcodec.a(pthread_frame.o): In function `ff_frame_thread_free':
/home/jamiey/ffmpeg/libavcodec/pthread_frame.c:575: undefined reference to `pthread_join'
/home/jamiey/ffmpeg/lib/libavcodec.a(pthread_frame.o): In function `ff_frame_thread_init':
/home/jamiey/ffmpeg/libavcodec/pthread_frame.c:705: undefined reference to `pthread_create'
/home/jamiey/ffmpeg/lib/libavcodec.a(pthread_slice.o): In function `ff_slice_thread_init':
/home/jamiey/ffmpeg/libavcodec/pthread_slice.c:220: undefined reference to `pthread_create'
/home/jamiey/ffmpeg/lib/libavcodec.a(pthread_slice.o): In function `ff_slice_thread_free':
/home/jamiey/ffmpeg/libavcodec/pthread_slice.c:118: undefined reference to `pthread_join'
/home/jamiey/ffmpeg/lib/libavutil.a(rational.o): In function `av_d2q':
/home/jamiey/ffmpeg/libavutil/rational.c:115: undefined reference to `log'
/home/jamiey/ffmpeg/libavutil/rational.c:118: undefined reference to `floor'
/home/jamiey/ffmpeg/lib/libavutil.a(eval.o): In function `eval_expr':
/home/jamiey/ffmpeg/libavutil/eval.c:183: undefined reference to `trunc'
/home/jamiey/ffmpeg/libavutil/eval.c:182: undefined reference to `ceil'
/home/jamiey/ffmpeg/libavutil/eval.c:181: undefined reference to `floor'
/home/jamiey/ffmpeg/libavutil/eval.c:241: undefined reference to `pow'
/home/jamiey/ffmpeg/libavutil/eval.c:177: undefined reference to `exp'
/home/jamiey/ffmpeg/libavutil/eval.c:176: undefined reference to `exp'
/home/jamiey/ffmpeg/libavutil/eval.c:287: undefined reference to `pow'
/home/jamiey/ffmpeg/libavutil/eval.c:278: undefined reference to `floor'
/home/jamiey/ffmpeg/lib/libavutil.a(eval.o): In function `av_strtod':
/home/jamiey/ffmpeg/libavutil/eval.c:112: undefined reference to `pow'
/home/jamiey/ffmpeg/libavutil/eval.c:103: undefined reference to `pow'
/home/jamiey/ffmpeg/libavutil/eval.c:109: undefined reference to `pow'
/home/jamiey/ffmpeg/lib/libavutil.a(eval.o): In function `parse_primary':
/home/jamiey/ffmpeg/libavutil/eval.c:394: undefined reference to `sinh'
/home/jamiey/ffmpeg/libavutil/eval.c:395: undefined reference to `cosh'
/home/jamiey/ffmpeg/libavutil/eval.c:396: undefined reference to `tanh'
/home/jamiey/ffmpeg/libavutil/eval.c:397: undefined reference to `sin'
/home/jamiey/ffmpeg/libavutil/eval.c:398: undefined reference to `cos'
/home/jamiey/ffmpeg/libavutil/eval.c:399: undefined reference to `tan'
/home/jamiey/ffmpeg/libavutil/eval.c:400: undefined reference to `atan'
/home/jamiey/ffmpeg/libavutil/eval.c:401: undefined reference to `asin'
/home/jamiey/ffmpeg/libavutil/eval.c:402: undefined reference to `acos'
/home/jamiey/ffmpeg/libavutil/eval.c:403: undefined reference to `exp'
/home/jamiey/ffmpeg/libavutil/eval.c:404: undefined reference to `log'
/home/jamiey/ffmpeg/libavutil/eval.c:405: undefined reference to `fabs'
collect2: ld returned 1 exit status

但是,我成功地在其他库中运行了函数,例如“ffmpeg/libavcodec/avcodec.h”中的函数。为什么“ffmpeg/libavfilter/lavfutils.h”会出现这种情况?

看起来您针对应用程序链接的库依赖于其他库。尝试添加
-pthread
并查看错误计数是否更改。

如果库名称为'lavfutils.h',则将其链接到
-llavfutils
。你忘了一个l。您不应该传递指向宽度和高度整数的指针吗?当前,您通过值传递一个整数,而不是它的地址。ciphermagi,运行带有-LLAVUTILS的gcc会出现错误“/usr/bin/ld:找不到-LLAVUTILS”。gcc的版本是什么?这是什么操作系统?我不确定,但它应该是
C
语言中的
int main(void)