vc 找到一个或多个多重定义的符号

vc 找到一个或多个多重定义的符号, 这个问题还是不能很好的解决.

最根本的是: 把所有有关定义的部分都放在.cpp文件中,对应的.h文件中只放声明.
这样在#include ""的时候就可以完全避免出现符号重定义的现象.

万一真的碰到这种情况,可以试着用以下两种方法解决一下:

1.VS2005中,在项目->属性->链接器->命令行->附加选项中加 /force 可以解决问题,但会出现警告

2.在多重定义的符号前加static标识,可以很好的解决

申明全局变量,全局函数一定要在cpp中申明,其他类引用该全局变量就include该cpp的h文件,然后extern一下就好了,否则容易出现该重复定义错误。 
这个"容易"是如何解释的呢? 
例如A.h中如果申明了全局变量int Global; 在B.h中include "A.h"               extern int Global; 
则你include A.h相当于把A.h中全局变量的申明也include进来了,编译器就会认为是重复定义。所以全局变量和函数申明一定要在cpp中! 
1、当.h文件里有函数实现时,VS2005编译器报此错误,解决方法 : 1)在.h里的函数声明前加 inline 
2)在项目->属性->链接器->命令行->附加选项中加   /force   

2、当函数实现位于.cpp文件时,要在函数实现之前加上inline

原文地址:https://www.cnblogs.com/yelongsan/p/4142118.html