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
最後に、修正できない未解決のシンボルの問題が 1 つあります。
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;
};
午前中ずっとグーグルで検索しましたが、誰もこの問題について言及していませんでした。これには単純な理由と解決策があるはずだと思います。おそらく、単純な知識に対する私の無知のせいです。