2013-06-23 72 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。