一无所知

世界如此之大,世界又如此之小!我什么都不知,只知我一无所知!

首页 CNDEV 网志 联络 (RSS 2.0) (Atom) 登录
  随笔 25 :: 收藏 0 :: 评论 0 :: 寻迹: 1

News

本站主要是技术类的文章和新闻
本站内容按创作共用方式授权
如果侵犯了您的权利,请告之!

随笔

随笔归档

图库

编程手册

常用链接

网络工具

我的链接

在线翻译

在编译 JXTA-C 的时候发现一个有趣的现象,就是老是出现 LNK2005 错误

Linking...
MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: __errno already defined in LIBCMTD.LIB(dosmap.obj)
MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: _free already defined in LIBCMTD.LIB(dbgheap.obj)
MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: _realloc already defined in LIBCMTD.LIB(dbgheap.obj)
MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: _malloc already defined in LIBCMTD.LIB(dbgheap.obj)
MSVCRTD.LIB(MSVCRTD.dll) : error LNK2005: _memmove already defined in LIBCMTD.LIB(memmove.obj)

但是仔细查看了所用的链接库又都没有问题,没办法,只好一个库一个库的找,后来发现原来是MSVCRTD.LIB LIBCMTD.LIB 这两个库的先后顺序导致的问题,正确的顺序应该是

MSVCRTD.LIB LIBCMTD.LIB 而不是 LIBCMTD.LIB MSVCRTD.LIB

不知道什么原因???

 

posted on 2005-01-19 11:03

Feedback

# 回复: 【编程】编程语言(C++) - 编译 - MSVCRTD.LIB LIBCMTD.LIB 的顺序导致的编译错误! 2005-04-21 19:59:00 真命天子
这个问题很简单,就是在自己写的那个类的成员函数实现的时候,某个对象是全局定义,而在其他的相关连接的文件中,又定义了它。所以把那个对象在成员函数实现的时候定义成局部对象,就OK了

# 回复: 【编程】编程语言(C++) - 编译 - MSVCRTD.LIB LIBCMTD.LIB 的顺序导致的编译错误! 2006-12-29 11:39:00 leafsilver
调整lib的加载顺序即可

# 回复: 【编程】编程语言(C++) - 编译 - MSVCRTD.LIB LIBCMTD.LIB 的顺序导致的编译错误! 2007-08-08 18:34:00 bluez
我想问题的主要原因还是,各个Lib模块中的编译选项不一致导致的

# 回复: 【编程】编程语言(C++) - 编译 - MSVCRTD.LIB LIBCMTD.LIB 的顺序导致的编译错误! 2007-09-12 16:09:00 匿名
谢谢!

# 回复: 【编程】编程语言(C++) - 编译 - MSVCRTD.LIB LIBCMTD.LIB 的顺序导致的编译错误! 2008-07-22 08:33:00 maxint
先忽略了这两个库,再按顺序添加,怎么还是不行?不知这两个库做什么用的,Console程序可以直接忽略MSVCRTD就能解决这个问题,但是MFC程序一忽略问题反而更多了

发表评论

标题:  
署名:  
链接:
内容:
验证码: