例如项目中有两个窗体Dialog1和Dialog2,
新建头文件Header.h比如说有空函数void abc(){}
Dialog1.cpp中#include "Header.h"
Dialog2.cpp中#include "Header.h"错误提示:
Dialog2.obj : error LNK2005: "void __cdecl abc(void)" (?abc@@YAXXZ) already defined in HeadTestDlg.obj
Debug/HeadTest.exe : fatal error LNK1169: one or more multiply defined symbols found比如说每个类中都可以#include "stdafx.h"

解决方案 »

  1.   

    你把函数定义到了HeadTestDlg....
    你应该把void abc(){} 定义到Header.h对应的CPP如Header.cpp里面..然后再包含到其他CPP里面
      

  2.   

    包含了2次有两个函数体。
    把声明和定义分开,头文件里 Header.h声明void abc();在cpp文件里面定义。
    void abc(){}这个不是类里面的成员函数吗?
      

  3.   

    应该在头文件写上
    #pragma once吧
      

  4.   

    abc的函数实现是否重复包含,同时头文件可以用如下防止重复包含
    #pragma once
      

  5.   

    多个文件同时引用一个头文件是很正常的事
    头文件中加入
    #pragma once

    #ifndef  _XXXXX_  //一个宏用来标识这个文件
    #define  _XXXXX_
    //你的头文件
    #endif
      

  6.   

    在头文件中声明,在CPP文件中定义