重复包含定义 导致未定义类型不识别错误
错误提示:
f:\vs2010projects\combine\combine\func.h(9): error C2011: “func”:“class”类型重定义
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(21): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(21): error C2228: “.setindex”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(22): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(22): error C2228: “.setxx”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(23): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(23): error C2228: “.setyy”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(24): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(24): error C2228: “.setwidth”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(25): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(25): error C2228: “.setheight”的左边必须有类/结构/联合
1>f:\vs2010projects\combine\combine\com.cpp(26): error C2027: 使用了未定义类型“func”
1> f:\vs2010projects\combine\combine\func.h(9) : 参见“func”的声明
1>f:\vs2010projects\combine\combine\com.cpp(26): error C2228: “.init”的左边必须有类/结构/联合
解决方法:
仔细查找,看看是否多次包含了该函数以及变量的定义:
#include <cv.h>
#include <highgui.h>
#include <iostream>
#include "func.h"
#include "road.h"
查找后发现#include "func.h"重复包含,注释掉即可
注意:
1,调用较多类或者库文件时,容易发生重复包含,导致重定义
2,有时即使项目文件夹下包含了h文件和cpp文件,但是由于没有添加
到工程目录中,也可能导致不识别函数。将cpp添加即可解决。
以下是错误提示:(真是让人无语)
Page1.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall func::init(int,int,int)" (?init@func@@QAEXHHH@Z),该符号在函数 "public: void __thiscall CPage1::OnBnClickedButton1(void)" (?OnBnClickedButton1@CPage1@@QAEXXZ) 中被引用
1>Page1.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall func::func(void)" (??0func@@QAE@XZ),该符号在函数 "public: __thiscall road::road(void)" (??0road@@QAE@XZ) 中被引用
1>C:\Users\HYZ\Desktop\dll文件库\tab111.exe : fatal error LNK1120: 2 个无法解析的外部命令