以下のプログラムをコンパイルしようとすると、リンカ エラーが発生します。
/tmp/ccAikIsV.o undefined reference to uvlc_encode_blockline
私はすべての構造体 video_controller_t .. などを宣言し、typedef しています。
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 { encode_blockline_fc encode_blockline; の下の構造体で使用しました。デコード_ブロックライン_fc デコード_ブロックライン; update_fc 更新; 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 } };