1

我将 ffmpeg 1.2.1 构建为静态库 - x64,调试。我试图打开一个链接到它的旧项目。在我的源代码中修改了一些更改的 API 和类似内容后,它编译得很好,但我在链接方面遇到了重大问题。

编辑:完整的最新构建输出:

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 上都变得不那么实用?

4

1 回答 1

0

前 8 个错误可以通过手动插入来解决

#define _CRTIMP

在一些文件中。这将防止错误使用 declspec(__dllimport)。我们正在构建一个静态库,而不是 DLL,所以它不应该存在。我还尝试--extra-cflags='-D_CRTIMP'在构建 ffmpeg 之前运行 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。

于 2013-07-07T14:06:35.563 回答