【问题标题】:_stricoll is unsolved while linking the libmingwex.a with vs2010将 libmingwex.a 与 vs2010 链接时,_stricoll 未解决
【发布时间】: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.alibmsvcr100.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


【解决方案1】:

moskito-x 和 OP 的解决方案。

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

【讨论】:

    猜你喜欢
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 2015-02-15
    相关资源
    最近更新 更多