2013-06-23 39 views
1

我構建了ffmpeg 1.2.1作爲靜態lib -x64調試。我試圖打開一個與之相連的舊項目。在修改了一些更改後的API和類似的源代碼後,它編譯得很好,但是我在鏈接方面遇到了很多問題。在Windows上靜態構建ffmpeg時未解析的外部結構

編輯:完整的最新版本輸出:

1>libavformat.a(mov.o) : error LNK2019: unresolved external symbol __imp__gmtime64 referenced in function mov_read_mvhd 
1>libavutil.a(parseutils.o) : error LNK2001: unresolved external symbol __imp__gmtime64 
1>libavformat.a(os_support.o) : error LNK2019: unresolved external symbol __imp__wsopen referenced in function ff_win32_open 
1>libavcodec.a(pthread.o) : error LNK2019: unresolved external symbol __imp__beginthreadex referenced in function ff_thread_init 
1>libavcodec.a(frame_thread_encoder.o) : error LNK2001: unresolved external symbol __imp__beginthreadex 
1>libavutil.a(parseutils.o) : error LNK2019: unresolved external symbol __imp__localtime64 referenced in function av_parse_time 
1>libavutil.a(parseutils.o) : error LNK2019: unresolved external symbol __imp__time64 referenced in function av_parse_time 
1>libavutil.a(parseutils.o) : error LNK2019: unresolved external symbol __imp__mktime64 referenced in function av_parse_time 
1>libmingwex.a(lib64_libmingwex_a-mingw_output_format.o) : error LNK2019: unresolved external symbol __mingw_get_msvcrt_handle referenced in function __mingw_set_output_format 
1>libmingwex.a(lib64_libmingwex_a-mingw_get_codepage.o) : error LNK2001: unresolved external symbol __mingw_get_msvcrt_handle 

我在做什麼錯?
我在這裏錯過了什麼?
ffmpeg現在甚至可以在Windows平臺上作爲一個靜態庫工作,或者在每個新版本的Windows上它變得功能較少?

+0

請在構建時告訴您的配置設置。 –

+0

@Wildan,問題出在MinGW。 – user1764961

回答

0

前8個錯誤可能由一些文件手動插入

#define _CRTIMP 

來解決。這將防止錯誤地使用declspec(__ dllimport)。我們正在構建一個靜態庫,而不是一個DLL,所以它不應該在那裏。在構建ffmpeg之前,我也嘗試使用--extra-cflags='-D_CRTIMP'來運行configure,但它完全剎住了構建。所以,手動方式是唯一的方法。

最後2個錯誤是總婊子:

libmingwex.a(lib64_libmingwex_a-mingw_output_format.o) : error LNK2019: unresolved external symbol __mingw_get_msvcrt_handle referenced in function __mingw_set_output_format 
1>libmingwex.a(lib64_libmingwex_a-mingw_get_codepage.o) : error LNK2001: unresolved external symbol __mingw_get_msvcrt_handle 

libmingw32.a發現這些符號(如果我沒記錯的話)。但是,當我鏈接它時,我與LIBCMTD.lib有衝突。刪除LIBCMTD.lib會創建大量未解析的外部數據。

所以,我想說,今天我們無法在Windows上將ffmpeg構建爲靜態x64庫。這是在預料之中,因爲每個新版本都不太適合Windows。