win32下用mfc的类出现的问题

本文详细解析了MSVCRT与LIBCMT库的区别及应用场合,阐述了如何解决因混合使用不同类型的C运行时库而导致的LNK2005错误,并提供了在Visual C++ 2005中忽略指定库的方法。

 

msvcrt.lib是VC中的Multithreaded DLL 版本的C运行时库,而libcmt.lib是Multithreaded的运行时库。

 

LNK2005这个错误是微软设计错误,因此如果遇到这个错误,我们只能躲过这个链接错误。具体的办法 

就是将那个提示出错的库放到另外一个库的前面。另外选择不同的C函数库,可能会引起这个 

错误。MS,   C有两种C函数库,一种是普通的函数库:LIBC.LIB,不支持多线程。另外一种是 

支持多线程的:msvcrt.lib。如果一个工程里,这两种函数库混合使用,可能会引起这个错误。 

因此建议使用支持多线程的msvcrt.lib。

 

VS2005:cannot open file 'LIBC.lib'

单击项目->项目属性->配置属性->链接器->输入->忽略特定库,输入LIBC.lib即可。

原因是Visual C++ 2005不再支持单线程的CRT库(LIBC.lib)

 

libc.lib原来是被遗弃的可怜家伙。

 

Run-Time Library是编译器提供的标准库,提供一些基本的库函数和系统调用。我们一般使用的Run-Time Library是C Run-Time Libraries。

 

当然也有Standard C++ libraries。 

 

C Run-Time Libraries实现ANSI C的标准库。

 

VC安装目录的CRT目录有C Run-Time库的大部分源代码。 

 

C Run-Time Libraries有静态库版本,也有动态链接库版本;有单线程版本,也有多线程版本;还有调试和非调试版本。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值