【问题标题】:Building static FFmpeg libs for Windows 64-bit application为 Windows 64 位应用程序构建静态 FFmpeg 库
【发布时间】:2016-04-06 20:00:02
【问题描述】:

我为 Windows 64 位构建静态 FFmpeg 库。配置如下:

./configure --disable-everything --enable-static --disable-shared --enable-memalign-hack --disable-debug --enable-stripping --enable-protocol=file --enable-yasm --enable-decoder=mp3,mpeg4,h264 --enable-muxer=mp4,avi --enable-encoder=mjpeg.

该应用程序是在 Visual Studio 2012 中构建的,带有 /MT 选项,并与 libavformat.alibavcodec.a 等链接。我还将它与 libmingwex.alibgcc.a 链接。

链接器失败并出现以下错误:

6>libavformat.a(file.o) : error LNK2001: unresolved external symbol __imp__wrmdir
6>libavformat.a(file.o) : error LNK2001: unresolved external symbol __imp__rmdir
6>libavformat.a(file.o) : error LNK2001: unresolved external symbol __imp__wunlink
6>libavformat.a(file.o) : error LNK2001: unresolved external symbol __imp__unlink
6>libavutil.a(time.o) : error LNK2001: unresolved external symbol clock_gettime
6>libavutil.a(time.o) : error LNK2001: unresolved external symbol nanosleep

对于后面的2个错误,我可以通过在config.h中手动定义宏来解决:#define HAVE_NANOSLEEP 1#define HAVE_CLOCK_GETTIME 1

问题是如何解决前4个。这些看起来像从dll(__imp前缀)导入的函数,但我的应用程序是用/MT构建的,我不希望FFmpeg中有任何动态依赖项。如何摆脱它们?

我尝试使用--extra-cflags="-static" 配置FFmpeg,但没有帮助。

【问题讨论】:

    标签: ffmpeg mingw mingw-w64


    【解决方案1】:

    事实证明,现在可以原生地build FFmpeg with Visual Studio tool chain。所以所有与 MinGW 相关的问题都不再相关了。

    对于 2013 之前的 VS 版本,对 C99 没有很好的支持,需要下载 c99wrap.exe、c99conv.exe 和 inttypes.h。然后打开 Visual Studio 原生 x64 命令提示符(使 VC 工具链和标头在搜索路径上),并调用 ./configure --toolchain=msvcmake

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-07-02
      • 1970-01-01
      • 1970-01-01
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多