尽管在OpenFEC库中进行了链接,但未定义引用

Undefined reference despite linking in OpenFEC-library

本文关键字:链接 引用 未定义 OpenFEC      更新时间:2023-10-16

当我在代码中引用OpenFEC(OpenFEC.org)函数时,我遇到了这个问题:

anders@ubuntu:~/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

包含这些函数的c文件包含在openfec库中。

命令nm ../openfeclib/libopenfec.so | grep of_release_codec给出:

000000000001a294 T of_release_codec_instance

如何解决此问题?

我(终于!!)在FFMpeg邮件列表中提到了解决方案:http://ffmpeg.org/faq.html#I_0027m-使用-FFmpeg-from-within-my-C_002b-002b-应用程序-链接器抱怨-关于使用符号-似乎可用_002e

引用:"FFmpeg是一个纯C项目,因此要在C++应用程序中使用库,您需要明确声明您正在使用C库。您可以通过使用extern"C"包含FFmpeg includes来实现这一点。"

我将同样的解决方案应用于我的FFMpeg问题和OpenFEC库问题。