error LNK2019: unresolved external symbol __imp____lc_codepage referenced in function _mbrlen libmingwex.a

windows下编译ffmpeg静态库时,只能生成.a静态库,ffmpeg静态库加入了x264编码器的支持。当然,我们是可以将这些.a文件链接到我们VC工程的。(建议按此链接顺序)

并且将C:\MinGW\lib加入到附加目录中。

#pragma comment(lib, "libgcc.a")

#pragma comment(lib, "libmingwex.a")

#pragma comment(lib, "libavcodec.a")
#pragma comment(lib, "libavformat.a")
#pragma comment(lib, "libavutil.a")
#pragma comment(lib, "libswscale.a")
#pragma comment(lib, "libx264.a")
#pragma comment(lib, "libpthreadGC2.a")

编译工程,有四个链接错误:

1>libavcodec.a(dsputil_mmx.o) : error LNK2001: unresolved external symbol ___gcc_personality_v0
1>libavcodec.a(dsputil_mmx.o) : error LNK2019: unresolved external symbol __Unwind_Resume referenced in function _gmc_mmx

1>libmingwex.a(mbrtowc.o) : error LNK2019: unresolved external symbol __imp____lc_codepage referenced in function _mbrlen
1>libmingwex.a(wcrtomb.o) : error LNK2001: unresolved external symbol __imp____lc_codepage

解决方法:

加入#pragma comment(lib, "libgcc_s.a"),解决1、2

3、4解决方法如下:

1.cmd命令

2.>cd D:\Program Files\Microsoft Visual Studio 10.0\VC\bin

3>vcvars32.bat

4>cd C:\MinGW\lib

5> lib -remove:mbrtowc.o libmingwex.a

6.>lib -remove:wcrtomb.o libmingwex.lib
这时候在libmingwex.a同目录下会生成一个libmingwex.lib文件,将其替换libmingwex.a链接到工程中。
如果链接还出现错误,请将工程设置MD(MDd)改为MT(MTD);
于是,工程头文件变成:

#pragma comment(lib, "libgcc.a")
#pragma comment(lib, "libmingwex.lib")
#pragma comment(lib, "libgcc_s.a")
#pragma comment(lib, "libavcodec.a")
#pragma comment(lib, "libavformat.a")
#pragma comment(lib, "libavutil.a")
#pragma comment(lib, "libswscale.a")
#pragma comment(lib, "libx264.a")
#pragma comment(lib, "libpthreadGC2.a")
#pragma comment(lib, "zlib.lib")
#pragma comment(lib, "libbz2.a")

不一定要和我的一样,但是我的必须要有这些才能链接通过。


 
编译,链接成功!
posted @ 2012-09-10 17:52  Youf Leen  阅读(1809)  评论(1编辑  收藏  举报