【发布时间】:2013-09-24 22:10:20
【问题描述】:
我倾向于在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;
};
我整个早上都在谷歌上搜索,但没有人提到这个问题。我想这应该有简单的原因和解决方案,可能是因为我对简单的知识一无所知。
【问题讨论】:
-
你用
libmoldname100.a和libmsvcr100.a试过了吗 -
@moskito-x 是的!它是 libmoldname100.a。非常感谢!
-
当我使用 mingw-w64 执行编译步骤时,我得到一个新的链接错误:libmingw32.a(lib32_libmingw32_a-pesect.o) : error LNK2019: unresolved external symbol __image_base______ 在函数中引用 ____FindPESectionByName.__ 我真的需要修改并重新编译 libmingw32 以摆脱它吗?这让我发疯了。
-
您不能将 mingw32 与 mingw64 混合使用。使用 mingw32。
标签: visual-studio-2010 linker ffmpeg cmake mingw