0

我倾向于在 Windows 8 上构建一些静态链接 ffmpeg 库的应用程序。我已经在 Windows 8 上的 mingw/msys env 中成功构建了 ffmpeg 的静态库。然后我使用 cmake 生成 vs2010 项目以开始使用我的应用程序.

当我尝试构建第一个死的简单主程序时,我遇到了一些链接错误。

extern "C" {

// to work around error:
// 'UINT64_C': identifier not found
#ifndef __STDC_CONSTANT_MACROS
#define __STDC_CONSTANT_MACROS
#endif


#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libswscale/swscale.h>

}


int main(int argc, char *argv[])
{
    av_register_all();
    return 0;
}

在与一堆未解析的符号苦苦挣扎之后,我想出了以下库以按顺序链接:

c:/MinGW/mingw32/lib/libiconv.a
libavcodec.a
libavdevice.a
libavfilter.a
libavformat.a
libavutil.a
libswresample.a
libswscale.a
c:/MinGW/lib/gcc/mingw32/4.8.1/libgcc.a
c:/MinGW/mingw32/lib/libws2_32.a
c:/MinGW/mingw32/lib/libmingw32.a
c:/MinGW/mingw32/lib/libmingwex.a

最后还有一个无法解决的符号问题:

libmingwex.a(glob.o) : error LNK2019: unresolved external symbol 
                       _stricoll referenced in function _glob_match

我试图添加一些假功能,但仍然没有帮助:(

int  __cdecl _stricoll(_In_z_  const char * _Str1, _In_z_  const char * _Str2)
{
    return 0;
};

我整个早上都在谷歌上搜索,但没有人提到这个问题。我想这应该有简单的原因和解决方案,也许是因为我对简单的知识一无所知。

4

1 回答 1

0

moskito-x 和 OP 的解决方案。

在 MinGW 库中,符号 _stricoll 在 libmoldname100.a 中定义。

于 2018-05-14T15:36:22.257 回答