c - 使用结构变量时出现链接器错误

标签 c linker

当我尝试编译下面的程序时,出现链接器错误:

/tmp/ccAikIsV.o    undefined reference to uvlc_encode_blockline

我已经声明并定义了所有结构 video_controller_t .. 等

int uvlc_encode_blockline(struct video_controller_t* controller, const struct    vp_api_picture_t* blockline, bool_t picture_complete );
int uvlc_decode_blockline(struct video_controller_t* controller,struct vp_api_picture_t* picture, bool_t* got_image );
int uvlc_update( struct video_controller_t* controller );
int uvlc_cache( struct video_controller_t* controller,struct video_stream_t* ex_stream);

const uvlc_codec_t uvlc_codec = {
uvlc_encode_blockline,
uvlc_decode_blockline,
uvlc_update,
uvlc_cache,
{ 0 }
};

如果有人有任何建议,请告诉我。

<小时/>

更新

我同意我们应该定义函数来告诉链接器获取它并使用它。当我做类似的事情时,我没有收到任何错误。我声明了函数指针:

typedef C_RESULT (encode_blockline_fc)(struct video_controller_t controller,
                                       const struct vp_api_picture_t* blockline,
                                       bool_t picture_complete);

并在下面的结构中使用它:

typedef struct _video_codec_t
{
    encode_blockline_fc encode_blockline;
    decode_blockline_fc decode_blockline;
    update_fc update;
    cache_stream_fc cache_stream;
} video_codec_t;

如果以下语法有任何错误,请告诉我:

const uvlc_codec_t uvlc_codec = {
uvlc_encode_blockline,
uvlc_decode_blockline,
uvlc_update,
uvlc_cache,
{ 0 }
};
<小时/>

我同意我们应该定义函数来告诉链接器获取它并使用它。当我做类似的事情时,我没有收到任何错误。我声明了函数指针 typedef C_RESULT (encode_blockline_fc)( struct video_controller_t Controller , const struct vp_api_picture_t* blockline, bool_t picture_complete ); 并在下面的结构中使用它 typedef struct _video_codec_t { 编码 block 线_fc 编码 block 线;解码 block 线_fc 解码 block 线; update_fc更新;缓存_流_fc 缓存_流; }video_codec_t

如果以下语法有任何错误,请告诉我: const uvlc_codec_t uvlc_codec = { uvlc_encode_blockline, uvlc_decode_blockline, uvlc_更新, uvlc_缓存, { 0 } };

最佳答案

链接器提示对函数的未解析引用,而不是结构。您应该向链接器传递一个包含该函数的目标文件或库,或者在当前编译单元中定义它。

关于c - 使用结构变量时出现链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10493618/

相关文章:

c - 警告 : passing argument 1 of ‘calculation’ makes pointer from integer without a cast [enabled by default]

linux - 链接两个不同版本的库

与 g++ 链接时找不到 -lcuda

c - 尝试理解 JNI.h 中的 C 函数调用

c - 递归查找子字符串是否在字符串中

c - 如何在客户端处理传统 OCSP 和 OCSP 装订

c - 在 C 中使用动态分配将文件读入多维数组

c - OS X 链接器中 GNU 的 --wrap 链接器标志的等价物是什么?

c++ - 与 .so 文件链接 (webkit)

ios - 无法构建调试方案 - Apple Mach-O 链接器错误。链接器命令失败,退出代码为 1