2012-03-14 2 views
0

я получаю эту проблему, обращаясь к OpenFEC (openfec.org) -функции в моем коде:Неопределенная ссылка, несмотря на ссылки в OpenFEC-библиотеке

[email protected]:~/workspace/fectest$ gcc -L../openfeclib/ -l'openfec' -I../openfeclib fectest.cpp 
/tmp/ccEXLrdc.o: In function `main': 
fectest.cpp:(.text+0x17a): undefined reference to `of_create_codec_instance(of_session**, of_codec_id_t, unsigned char, unsigned int)' 
fectest.cpp:(.text+0x2db): undefined reference to `of_set_fec_parameters(of_session*, of_parameters*)' 
fectest.cpp:(.text+0x347): undefined reference to `of_build_repair_symbol(of_session*, void**, unsigned int)' 
fectest.cpp:(.text+0x395): undefined reference to `of_release_codec_instance(of_session*)' 
collect2: ld returnerade avslutningsstatus 1 

С-файлы, содержащие эти функции включены в openfec- библиотека.

Команда nm ../openfeclib/libopenfec.so | grep of_release_codec дает:

000000000001a294 T of_release_codec_instance 

Как решить эту проблему?

+0

Библиотеки всегда должны быть за исходными/объектными файлами. Другими словами, поместите '-lopenfec' последним в командной строке. –

+0

Спасибо за ответ! Ошибка остается: anders @ ubuntu: ~/workspace/fectest $ gcc fectest.cpp -L ../ openfeclib/-I ../ openfeclib/-I ../ openfeclib -lopenfec /tmp/ccqNtnWi.o: В функции 'main ': fectest.cpp :(. Text + 0x17a): неопределенная ссылка на' of_create_codec_instance (of_session **, of_codec_id_t, unsigned char, unsigned int)' fectest.cpp :(. Text + 0x2db): undefined ссылка на 'of_set_fec_parameters (of_session *, of_parameters *) ' fectest.cpp :(. text + 0x347): неопределенная ссылка на' of_build_repair_symbol (of_session *, void **, unsigned int)' fectest.cpp :(. text + 0x395): undefined reference t –

+0

Вы использовали '-lopenfec' или' -l'openfec'' в своих параметрах компиляции? Потому что последнее неверно? – Appleman1234

ответ

2

я (наконец-то !!) сослался на решение в списке FFMpeg-рассылки: Цитата http://ffmpeg.org/faq.html#I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e

: «FFmpeg это чистый проект C, поэтому для использования библиотеки в вашем C++ приложения вам нужно явно укажите, что вы используете библиотеку C. Вы можете сделать это, включив в свой FFmpeg использование extern «C».

Я применил то же решение к моей проблеме FFMpeg к проблеме OpenFEC-библиотеки.

Смежные вопросы