用VS写MFC程序,如果用到了从其他地方复制过来的..cpp文件,很容易就会报错:
error LNK2005 ....... 已经在 LIBCMTD.lib ..... 中定义
我查阅了网上已经有的文章,建议大概有2类。一类是在项目配置中直接忽略libcmtd.lib这个库。另一类是根据工程的类型(单线程、多线程、debug、release)去调换链接库的顺序。
这两种方法是很糟糕的。忽略一个库,很容易引起更多的报错。调换库的顺序,以后改项目配置的时候又会反复出现问题。这都是拆东墙补西墙的方法。
其实最根本有效的方法,就是在每个.cpp文件中加入include "stdafx.h"。即使不用预编译头,也要加入这个文件。这样能解决LIBCMTD.lib的链接冲突问题。