同时出现LNK2005 和LNK1169 error 的解决办法
项目场景:Visual Studio C++项目
Visual Studio 的C++ 项目中,在main.cpp中引入LinkStack.cpp时会出现以下报错:
问题描述

严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK1169 找到一个或多个多重定义的符号 queue2 F:\Cplusplus\queue2\Debug\queue2.exe 1
警告 C6011 取消对 NULL 指针“p”的引用。 queue2 F:\Cplusplus\queue2\LinkStack.cpp 33
错误 LNK2005 “void __cdecl DestroyStack(struct node * &)” (?DestroyStack@@YAXAAPAUnode@@@Z) 已经在 LinkStack.obj 中定义 queue2 F:\Cplusplus\queue2\main.obj 1
错误 LNK2005 “int __cdecl GetTop(struct node *,char &)” (?GetTop@@YAHPAUnode@@AAD@Z) 已经在 LinkStack.obj 中定义 queue2 F:\Cplusplus\queue2\main.obj 1
错误 LNK2005 “void __cdecl InitStack(struct node * &)” (?InitStack@@YAXAAPAUnode@@@Z) 已经在 LinkStack.obj 中定义 queue2 F:\Cplusplus\queue2\main.obj 1
错误 LNK2005 “int __cdecl Pop(struct node * &,char &)” (?Pop

在Visual Studio C++项目中,由于main.cpp直接引用LinkStack.cpp导致LNK2005和LNK1169错误。错误原因是每个cpp文件在没有被main.cpp引用时也会被编译,从而产生多个定义。解决方案包括创建头文件并正确引用。避免在一个cpp文件中直接引用另一个cpp文件,而是应该使用头文件进行间接引用。
最低0.47元/天 解锁文章
1267

被折叠的 条评论
为什么被折叠?



