關於編譯x264的一點附加小說明

最近在寫一個小程序,其中用到了x264視頻編解碼庫(x264是H.264標準的一個開源實現),採用的開發語言是C++。程序寫好後,在編譯鏈接時卻出現瞭如下錯誤:
/tmp/cc4WAe4w.o(.text+0x5d): In function `CVMX264::Init(int, int)':
/home/cyc/src/cdma_video_monitor_x264/cvmx264.cpp:34: undefined reference to `x264_param_default(x264_param_t*)'
/tmp/cc4WAe4w.o(.text+0x78):/home/cyc/src/cdma_video_monitor_x264/cvmx264.cpp:38: undefined reference to `x264_encoder_open(x264_param_t*)'
/tmp/cc4WAe4w.o(.text+0xaa):/home/cyc/src/cdma_video_monitor_x264/cvmx264.cpp:41: undefined reference to `x264_picture_alloc(x264_picture_t*, int, int, int)'
(......省略部分錯誤信息……)
但是我在編譯的時候明明是指定了-lx264選項的。奇怪了,問題會出在哪裏呢?百思不得其解之後,我決定看看x264的代碼。結果,發現了一個非常可疑的地方。在最重要的接口文件x264.h中,沒有看到下面這樣一段習慣性的代碼:
#ifdef  __cplusplus
    extern "C" {
#endif
(......省略中間定義的內容......)
#ifdef  __cplusplus
    }
#endif
上面的這段代碼在C++和C接口的時候是很重要的。會不會就是這個原因呢?我馬上修改了頭文件,在x264.h的開頭處增加了:
#ifdef  __cplusplus
    extern "C" {
#endif
在結尾處增加的是:
#ifdef  __cplusplus
    }
#endif
然後,重新編譯安裝x264,再編譯自己的程序,通過了!
看來,x264還有很多地方需要完善吶!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章