将cpp添加到解决方案资源管理器时出现“已定义”错误

时间:2012-10-08 15:32:01

标签: visual-c++

我的dll项目包含额外的A.h头文件。 A.cpp包括具有o标头的A.h和B.cpp。如果我确实将B.cpp添加到visual c ++项目编译器报告了许多错误:

Error   9   error LNK2005: "wchar_t * __stdcall aaa(int)" (?aaa@@YGPA_WH@Z) already defined in A.obj    C:\P\B.obj  pr1

如果我将B.cpp留在项目目录中但没有将其添加到项目中,则没有问题和项目编译好。

这是添加B.cpp文件的问题吗?

3 个答案:

答案 0 :(得分:1)

  

我认为扩展没有影响力,可能是你想要的任何东西。如果我错了,请纠正我,但我想我可以将B.h重命名为B.fss,在源代码中定义它,编译器应该编译

如果您将b.cpp包含在项目中,它将自动编译;并且当您在其他地方包含同一文件的内容时,其中的代码将再次编译,导致重复的定义错误

答案 1 :(得分:1)

基本上如果你在一个.cpp文件中包含一些定义而不是声明的东西,并且还将它添加到项目当然你会得到多个定义错误 - 将B.cpp中的东西的定义移动到Bh并包括在A.cpp。问题不在于文件扩展名,问题在于您需要了解同一事物的多个定义会导致此类错误。

答案 2 :(得分:0)

#include用于头文件,而不是其他.cpp文件。

从A.cpp中移除#include "B.cpp",事情将开始正常运作。

如果您打算将其包括在内,请将B.cpp重命名为B.h。