首页
社区
课程
招聘
[求助]非常简单的东东在vc6.0通过 vc2005不行
发表于: 2008-5-23 21:53 5589

[求助]非常简单的东东在vc6.0通过 vc2005不行

2008-5-23 21:53
5589
真是郁闷...哭啊..~~     大大们帮忙拉~~谢谢~

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (8)
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
在vc6里面 控制台的程序 工程里面设置为mfc为静态连接  编译通过.
在vc2005里面同样设置 死活不给通过...
2008-5-23 21:55
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
那是c runtime lib的问题,你看看你哪里设置错误了?
我这里编译没有问题.
上传的附件:
2008-5-24 06:08
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
把你的工程配置截图发上来看看?或者你把工程打包发上来.
2008-5-24 06:11
0
雪    币: 243
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
最好不要在2005中直接打开vc6的工程
2008-5-24 09:02
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
问题出在那个预编译头选项...  如果选择空项目则正常...默认的选项则不行...那这样子岂不是很麻烦吗?  问一下大家有好的办法吗? 请告诉小弟一下,谢谢~
上传的附件:
2008-5-24 09:26
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有可能预编译头包含的文件连接的是share的c runtime 库,而静态连接MFC是连接的static的c runtime 库,不能同时在一个项目里面连接两个不同的c runtime 库.

===========华丽的转帖线============
从错误信息可以看出是msvcrt.lib和libcmt.lib库中重复定义了__isctype等符号。为什么会出现这样的问题呢?这就要从这两个库的作用说起了。

msvcrt.lib是VC中的Multithreaded DLL 版本的C运行时库,而libcmt.lib是Multithreaded的运行时库。在同一个项目中,所有的源文件必须链接相同的C运行时库。如果某一文件用了Multithreaded DLL版本,而其他文件用了Single-Threaded或者Multithreaded版本的库,也就是说用了不同的库,就会导致这个警告的出现。

告警信息的意思我们明白之后,就要找造成这个问题的原因了。在项目设置中我们可以看到当前项目使用的是Multithreaded非DLL版本的运行时库,这说明项目中还有其他文件用到了不是这个版本的运行时库。很显然,就是openssl的静态库。查看openssl中ms下的nt.mak,我们可以发现静态库版本中openssl使用编译开关/MD进行编译的,也就是说openssl静态库是默认用的Multithreaded DLL 版本的C运行时库。

原因找到了。那么解决方法,很明显有两个。总之就是将两个项目的运行时库统一。

简单的方式就是将项目的动态库修改为使用Multithreaded DLL 版本的C运行时库即可。
某些情况下你的项目可能不能改变当前的运行时库,你可以将openssl的nt.mak中的/MD开关修改为/MT然后重新编译openssl静态库就可以了。
VC中的C运行时库一共有6种,想了解更多信息可以参阅我先前翻译的文章。

Single-threaded (libc.lib) libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Multithreaded (libcmt.lib) libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Multithreaded using DLL (msvcrt.lib) libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
Debug Single-threaded (libcd.lib) libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
Debug Multithreaded (libcmtd.lib) libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, msvcrtd.lib
Debug Multithreaded using DLL (msvcrtd.lib) libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib
2008-5-24 10:34
0
雪    币: 215
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
http://blog.csdn.net/vocanicy/archive/2008/05/15/2449691.aspx

http://blog.csdn.net/vocanicy/archive/2008/05/15/2449686.aspx

这两篇文章可能会对你有帮助.
2008-5-24 10:35
0
雪    币: 208
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
谢谢... 看样子比vc6麻烦
2008-5-24 10:56
0
游客
登录 | 注册 方可回帖
返回
//