- 问题起源:
Linking...
libc.lib(crt0dat.obj) : error LNK2005: _exit already defined in msvcrtd.lib(MSVCRTD.dll)
libc.lib(crt0dat.obj) : error LNK2005: __exit already defined in msvcrtd.lib(MSVCRTD.dll)
libc.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in msvcrtd.lib(cinitexe.obj)
libc.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in msvcrtd.lib(cinitexe.obj)
libc.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in msvcrtd.lib(cinitexe.obj)
libc.lib(crt0init.obj) : error LNK2005: ___xi_a already defined in msvcrtd.lib(cinitexe.obj)
LINK : warning LNK4098: defaultlib "msvcrtd.lib" conflicts with use of other libs; use /NODEFAULTLIB:library
msvcrtd.lib(cinitexe.obj) : warning LNK4098: defaultlib "libc.lib" conflicts with use of other libs; use /NODEFAULTLIB:library.
- 问题分析:
提示库冲突,那么vc6下,工程->设置->连接,分类里边的输入,然后在忽略库里边写上libc.lib,以此来屏蔽该库。
接下来提示:
Linking...
libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol __pctype
libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol _errno
libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol ___mb_cur_max
libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol ___lc_codepage
libcp.lib(xmbtowc.obj) : error LNK2001: unresolved external symbol ___lc_handle
-
再次分析
可见上面的方法还不能解决问题。
细细想来,程序结构是mfc程序+静态lib库,mfc调用了lib库的导出函数。
问题产生原因是因为,在mfc程序默认是使用mfc作为共享dll,而lib库则是静态编译的。所以应该程序改为使用mfc作为静态链接库。
-
问题解决
vc6下,工程->设置->常规,将默认的使用mfc作为共享dll改为,使用mfc作为静态链接库。
忽略库:libc.lib