VS2010编译工程,链接时出现LINK2005:重复定义

3175 人浏览 | 时间: 2016-03-09 18:10:54 | 作者: wujunwei

  今天编译一个工程,链接的时候出现了LINK2005的错误,错误内容大概是libcmt.lib的某些函数在MSVCRT.lib已经定义了,导致出现重复定义的问题。

  后来查资料发现,在非MFC程序(使用standard windows library)中,添加MFC支持,静态链接MFC库,CRT库(MSVCRT.lib;msvcprt.lib)和MFC库(libcmt.lib;libcpmt.lib)链接时会出现定义冲突,也就是有些函数是一样的,重复了。

  原来就是这么简单,也就是说去掉MFC的静态库就可以了,于是我将的项目属性改为在共享 DLL 中使用 MFC,多线程dll,链接附加依赖项添加mfcs100u.lib ,如下图所示。

  因为是使用MFC的动态链接库,所以不会出现libcmt和libcpmt这两个库文件,也就不会有冲突了。

  以上是我的解决方法,如果大家也有类似的问题与解决方法,欢迎分享,共同进步。

参考文章:

http://wanglimin2004.blog.163.com/blog/static/115488498201371913132634/

  

相关阅读