0

x264 をスタティック ライブラリとして使用してカスタム ビデオ エンコーダーを構築しています。静的ライブラリを構築するために、このガイドに従いました。これをコンパイルしようとしています:

x264_t * setup_encoder(int width, int height){
    x264_param_t param;
    x264_param_default_preset(&param, "veryfast", "zerolatency");
    param.i_threads = 1;
    param.i_width = width;
    param.i_height = height;
    param.i_fps_num = 26;
    param.i_fps_den = 1;
    // Intra refres:
    param.i_keyint_max = 26;
    param.b_intra_refresh = 1;
    //Rate control:
    param.rc.i_rc_method = X264_RC_CRF;
    param.rc.f_rf_constant = 25;
    param.rc.f_rf_constant = 25;
    param.rc.f_rf_constant_max = 35;
    //For streaming:
    param.b_repeat_headers = 1;
    param.b_annexb = 1;
    x264_param_apply_profile(&param, "baseline");

    return x264_encoder_open(&param);
}

結果:

main.obj : エラー LNK2019: 未解決の外部シンボル "int __cdecl x264_param_default_preset(struct x264_param_t *,char const *,char const *)"

main.obj : エラー LNK2019: 未解決の外部シンボル "int __cdecl x264_param_apply_profile(struct x264_param_t *,char const *)"

main.obj : エラー LNK2019: 未解決の外部シンボル "struct x264_t * __cdecl x264_encoder_open_136(struct x264_param_t *)"

%PROJECT_DIR%: 致命的なエラー LNK1120: 3 つの未解決の外部

リンカは libx264.lib をスキャンしますが、内部には何も見つかりません。

Searching .\lib\libx264.lib:

dumpbin /HEADERS を使用すると、必要な宣言を実際に見つけることができますが、リンカーはそれを行うことができません。

SECTION HEADER #38
   .text name
       0 physical address
       0 virtual address
     E60 size of raw data
    930C file pointer to raw data (0000930C to 0000A16B)
    D219 file pointer to relocation table
       0 file pointer to line numbers
      40 number of relocations
       0 number of line numbers
60501020 flags
         Code
         COMDAT; sym= x264_param_default_preset
         16 byte align
         Execute Read

環境は、Windows 8 64 ビットで Intel Compiler 14 を使用した Visual Studio 2012 です。

4

1 に答える 1

2

C スタイルのバインドを使用して含めてみてください。

extern "C" {
#include <x264.h>
}
于 2013-11-03T05:27:35.887 に答える