gcc: привязка внешней библиотеки

0

В program.c, я хотел бы использовать метод 'avcodec_register_all()', определенный в libavcodec/avcodec.h.

Бег

gcc program.c -L$HOME/ffmpeg/lib/libavfilter.a -L$HOME/ffmpeg/lib/libavcodec.a

Дает мне ошибку

/tmp/ccNeQywU.o: In function 'main':
program.c:(.text+0x3f): undefined reference to 'avcodec_register_all'
collect2: ld returned 1 exit status

Правописание правильное и функция определена. Почему это происходит?

program.c

#include <stdio.h>

int main (int args, char *argv[])
{
 avcodec_register_all();
}
  • 3
    Попробуйте -L$HOME/ffmpeg/lib/ -lavfilter -lavcodec
  • 0
    Названный, Это дало мне приблизительно 1000 неопределенных ошибок ссылки.
Показать ещё 7 комментариев
Теги:
gcc
compiler-construction

3 ответа

5

Это так

gcc -static -lavfilter -lavcodec -L/HOME/ffmpeg/lib/

Вам нужно включить файл avcodec.h а также добавить путь к этому файлу в свои флаги include path для gcc.

gcc -static -lavfilter -lavcodec -L$HOME/ffmpeg/lib/ -I$HOME/ffmpeg/include

Статичность задается, потому что вы пытаетесь использовать библиотеку *.a, а не *.so (динамический).

  • 0
    Запуск 'gcc -lavfilter -lavcondec -L / $ HOME / ffmpeg / lib / -I / $ HOME / ffmpeg / include program.c' дает мне '/ usr / bin / ld: не удается найти -lavcondec collect2: ld вернул 1 выход статус'
  • 0
    попробуйте использовать статический, проверьте мой редактировать
Показать ещё 3 комментария
0

Одна из причин может заключаться в том, что функция avcodec_register_all() определена в файле C++. Он должен быть определен как extern "C" в avcodec.h и библиотека должна быть скомпилирована с помощью этого надлежащего avcodec.h.

  • 0
    В этом случае функция определена в C.
0

Используйте -lavcodec с существующими параметрами для gcc

Ещё вопросы

Сообщество Overcoder
Наверх
Меню