«Неопределенная ссылка на xxxxx», «проверьте каталог на наличие файлов», он не работает - PullRequest
0 голосов
/ 25 декабря 2011

С Рождеством всех,

Я кодирую ffmpeg с помощью gcc.

Но в процессе сборки я встретил ошибки «неопределенная ссылка на xxxxx» для всех функций, которые я закодировал в своей программе, и я понял, что это связано с файлом libxxx.a.

И каждый советник в Интернете предложил проверить каталог на наличие файлов.

Итак, я искал файлы, в которые входят имена функций на моем компьютере, и обнаружил, что файлы .a правильно установлены в каталоге, который я кодировал.

И есть другие файлы, которые называются «libxxx.dll.a», поэтому я попытался собрать файлы «libxxx.dll.a», но получил тот же результат.

По этому вопросу у меня есть несколько вопросов.

1) Если gcc не может найти файлы libxxx.a, он скажет, что "не может найти -lxxx". Но он просто сказал «неопределенная ссылка на хххх». Это означает, что эти файлы libxxx.a находятся в правильных каталогах.

2) А если файлы не определяют функции, это странно. Потому что эти файлы содержат имена функций и являются теми же файлами / каталогами, которые я искал на своем компьютере, и я думаю, что в них должны быть определения функций. Но я не уверен, что файлы определяют функции или нет, потому что я сам не могу прочитать файл.

Если я ошибаюсь, в чем была моя ошибка?

3) Можно ли заменить файлы libxxxlib.a на libxxx.a? И если это возможно, в чем разница между libxxxlib.a и libxxx.a? И то же самое для libz и libzlib? A

Вот моя строка commend, каталог, в котором находятся файлы libxxx.a.

g ++ -o C: \ ffmpeg \ ffmpegTest C: \ ffmpeg \ ffmpegTest.cc -IC: \ ffmpeg -LC: \ ffmpeg \ 3rdparty \ lib -lavutil -lavformat -lavcodec -lz -lavutil -lm -D__ST_ACACON *

C: \ FFmpeg \ 3rdparty \ Lib

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0xec>: неопределенная ссылка на 'av_register_all ()'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x11c>: неопределенная ссылка на файл av_open_input_file (AVFormatContext *, символьная константа , AVInputFormat *, int, AVFormatParameters *) '

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x13b>: неопределенная ссылка на 'av_find_stream_info (AVFormatContext *)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x174>: неопределенная ссылка на 'dump_format (AVFormatContext, int, char const *, int)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x224>: неопределенная ссылка на 'avcodec_find_decoder (CodecID)'

и все ошибки

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x281>: неопределенная ссылка на 'avcodec_open (AVCodecContext *, AVCodec)' *

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x297>: неопределенная ссылка на 'avcodec_alloc_frame ()'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x2a3>: неопределенная ссылка на 'avcodec_alloc_frame ()'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x2e6>: неопределенная ссылка на 'avpicture_get_size (PixelFormat, int, int)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x2fc>: неопределенная ссылка на 'av_malloc (unsigned int)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x341>: неопределенная ссылка на 'avpicture_fill (AVPicture *, unsigned char *, PixelFormat, int, int)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x38c>: неопределенная ссылка на 'avcodec_decode_video2 (AVCodecContext, AVFrame *, int, AVPacket *)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x409>: неопределенная ссылка на 'sws_getContext (int, int, PixelFormat, int, int, PixelFormat, int, SwsFilter *, swsFilter *, double const *) '

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. text + 0x463>: неопределенная ссылка на 'sws_scale (SwsContext *, unsigned char const * const *, int const *, int, int, беззнаковый char * const *, int сопз *) '

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x4bb>: неопределенная ссылка на 'av_free_packet (AVPacket *)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x4cf>: неопределенная ссылка на 'av_read_frame (AVFormatContext, AVPacket *)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x36c>: неопределенная ссылка на 'av_free (void *)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x36c>: неопределенная ссылка на 'avcodec_close (AVCodecContext *)'

C: \ Users \ AppData \ Local \ Temp \ ccVHLzjK.o: ffmpegTest.cc: <. Text + 0x36c>: неопределенная ссылка на 'av_close_input_file (AVFormatContext)'

1 Ответ

0 голосов
/ 25 декабря 2011

Вы должны опубликовать свое точное сообщение об ошибке (или хотя бы первые несколько строк).

Скорее всего, вы являетесь жертвой искажения имени в C ++ .

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *1011*.

.
...