当前位置: 代码迷 >> 综合 >> C++ VS2017 LNK 1169:找到一个或多个多重定义的符号
  详细解决方案

C++ VS2017 LNK 1169:找到一个或多个多重定义的符号

热度:4   发布时间:2024-01-24 17:14:40.0

错误提示:

1>LINK : 没有找到 E:\Project_File\VS\General_Mesh\Debug\general_mesh.exe 或上一个增量链接没有生成它;正在执行完全链接
1>general_mesh.obj : error LNK2005: "int field_max_X" (?field_max_X@@3HA) 已经在 FrontInfo.obj 中定义
1>general_mesh.obj : error LNK2005: "int field_max_Y" (?field_max_Y@@3HA) 已经在 FrontInfo.obj 中定义
1>general_mesh.obj : error LNK2005: "double lattice_size" (?lattice_size@@3NA) 已经在 FrontInfo.obj 中定义
1>general_mesh.obj : error LNK2005: "int graph_kind" (?graph_kind@@3HA) 已经在 FrontInfo.obj 中定义
1>general_mesh.obj : error LNK2005: "int * graph_info" (?graph_info@@3PAHA) 已经在 FrontInfo.obj 中定义
1>general_mesh.obj : error LNK2005: "int box_num" (?box_num@@3HA) 已经在 FrontInfo.obj 中定义
1>general_mesh.obj : error LNK2005: "int (* box_coordinate)[4]" (?box_coordinate@@3PAY03HA) 已经在 FrontInfo.obj 中定义
1>general_mesh.obj : error LNK2005: "int boundary_resolution_num" (?boundary_resolution_num@@3HA) 已经在 FrontInfo.obj 中定义
1>E:\Project_File\VS\General_Mesh\Debug\general_mesh.exe : fatal error LNK1169: 找到一个或多个多重定义的符号

原因:

FrontInfo.h中声明了变量,FrontInfo.cpp是FrontInfo.h中所声明的实现源代码,general_mesh.cpp是主程序文件,包含头文件 FrontInfo.h。编译能够通过,但链接时出了”error   LNK1169:   找到一个或多个多重定义的符号“的错误。这是因为general_mesh.cpp包含头文件 FrontInfo.h后,相当于又定义了变量。

解决:

解决办法是在FrontInfo.h中的变量声明前加上extern 关键字,表示这里只是声明不定义,然后在FrontInfo.cpp中不加extern关键字定义这个变量,编译链接顺利通过。

  相关解决方案