VC编译错误:msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::t.... 已经在 libcmtd.lib(typinfo.obj) 中定义

1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" ([email protected]@[email protected]@@Z) 已经在 libcmtd.lib(typinfo.obj) 中定义
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" ([email protected]@[email protected]@@Z) 已经在 libcmtd.lib(typinfo.obj) 中定义
1>msvcrtd.lib(MSVCR80D.dll) : error LNK2005: __CrtDbgReportW 已经在 libcmtd.lib(dbgrptw.obj) 中定义
1>msvcrtd.lib(MSVCR80D.dll) : error LNK2005: _wcslen 已经在 libcmtd.lib(wcslen.obj) 中定义
1>msvcrtd.lib(MSVCR80D.dll) : error LNK2005: _vsprintf_s 已经在 libcmtd.lib(vsnprnc.obj) 中定义
1>msvcrtd.lib(MSVCR80D.dll) : error LNK2005: _sprintf_s 已经在 libcmtd.lib(sprintf.obj) 中定义
1>msvcrtd.lib(MSVCR80D.dll) : error LNK2005: _vswprintf_s 已经在 libcmtd.lib(vswprnc.obj) 中定义
1>msvcrtd.lib(MSVCR80D.dll) : error LNK2005: _swprintf_s 已经在 libcmtd.lib(swprintf.obj) 中定义
1>libcmtd.lib(crt0init.obj) : warning LNK4098: 默认库“msvcrtd.lib”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

参考:http://blog.csdn.net/wuxch_hz/archive/2010/02/24/5321586.aspx

http://topic.csdn.net/t/20030507/17/1751913.html

解决方法:忽略冲突的库。例如,这里忽略msvcrtd.lib,因为它是我自己的lib里面链接的,而现在编译的exe应该使用libcmtd.lib库。

或者,在exe里面使用dll的配置,即,加入宏定义_AFXDLL,并使用/MDd多线程调试dll配置。

主要是由于运行时库冲突。

2010.3.29 19:01 注:

上面的方法还是不行!会出现其他问题的。

以下是我摸索出的最新的解决方法:

首先,所有的lib文件,使用/MTd或/MT编译。Debug调试模式使用/MTd,Release模式使用/MT。

然后,在自己的程序中也使用/MTd或/MT编译。这样就不会出问题了。

三种编译链接库的方式:

(1)连接Windows库。针对Win32 API编写的应用程序,上面的方法可能带来新问题,可以忽略libcmt.lib库,即可。如果还有其他问题,再忽略相应的库。

(2)MFC静态链接。上面的方法就是针对这种链接方式的,所以没问题。

(3)MFC动态链接。没有试过,应该和(1)类似。

最后补充:如果还不行,直接加入/force:multiple编译参数吧。这次之所以没有使用它,也是为了严谨起见。

By:zhanyonhu

转自:http://zhanyonhu.blog.163.com/blog/static/1618604420102292542353/

VC编译错误:msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::t.... 已经在 libcmtd.lib(typinfo.obj) 中定义,布布扣,bubuko.com

时间: 2024-10-14 20:48:59

VC编译错误:msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::t.... 已经在 libcmtd.lib(typinfo.obj) 中定义的相关文章

VS2017项目升级 error LNK2005: "public: __thiscall ATL::CTime::

我是将项目升级到从VS2012 升级VS2017, 报错如下 1>atlsd.lib(atltime.obj) : error LNK2005: "public: __thiscall ATL::CTime::CTime(__int64)" ([email protected]@@[email protected][email protected]) 已经在 UNIServer.obj 中定义1>atlsd.lib(atltime.obj) : error LNK2005:

2>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _calloc 已经在 LIBCMTD.lib(dbgcalloc.obj) 中定义

使用VS2010,在FireBreath里面调用ortp库和Speex库.编译的时候出现错误: 2>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _calloc 已经在 LIBCMTD.lib(dbgcalloc.obj) 中定义 事实上有非常多类似的打印. "属性"->"链接器"->"输入"->"忽略特定默认库" 将LIBCMTD.lib写入就能够了:

uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)"解决办法

如果在编译MFC程序的时候出现下列及类似的错误: 1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" ([email protected]@Z) 已经在 LIBCMTD.lib(new.obj) 中定义1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete

VC编译错误:一个或多个多重定义的符号

1>uafxcw.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" ([email protected]@Z) 已经在 LIBCMT.lib(new.obj) 中定义1>uafxcw.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" ([email prote

uafxcwd.lib(afxmem.obj) : error LNK2005 解决方法

项目为非MFC,但要用到MFC的库,使用过程中遇到的问题总结一下 uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" ([email protected]@Z) already defined in LIBCMTD.lib(new.obj)uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operat

MFC程序出现uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)解决办法

在同一个地方摔倒两次之后,决定记录下来这个东西. 问题 1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" ([email protected]@Z) 已经在 LIBCMTD.lib(new.obj) 中定义1>uafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator del

2>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _calloc 已经在 LIBCMTD.lib(dbgcalloc.obj) 中定义

使用VS2010,在FireBreath里面调用ortp库和Speex库,编译的时候出现错误: 其实有很多类似的打印. "属性"->"链接器"->"输入"->"忽略特定默认库" 将LIBCMTD.lib写入就可以了:

VC++编译错误error C2065: “HANDLE”: 未声明的标识符及添加winbase.h后提示winbase.h(243): error C2146: 语法错误: 缺少“;”(在标识符“Internal”的前面)的解决办法

问题描述: VC++程序编译时提示错误:error C2065: "HANDLE": 未声明的标识符等众多错误提示,如下所示: error C2065: "HANDLE": 未声明的标识符 error C2146: 语法错误: 缺少";"(在标识符"hFind"的前面) error C2065: "hFind": 未声明的标识符 error C2065: "INVALID_HANDLE_VALUE

1>MSVCRTD.lib(MSVCR100D.dll) : error LNK2005: _strncmp 已经在 libcmtd.lib(strncmp.obj) 中定义

原来在MFC ActiveX里面也是可以使用eXosip库的.... 悲剧总是在不经意间就发生在我的身上, 这个错误,莫名其妙的就出现了,同事编译好的eXosip库,在vs2010用的好好的,我在MFC里面去用就出现了这样的问题: 实例很多种方法,大部分说的就可MTD相关: 后来对比了同事的项目属性,使用的不是这个,是MT,打开他编译库的工程,发现也不是MTD,于是将工程拿出来,重新使用MTD编译出来的库,放在我那个里面使用就没有问题了.