我的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
文件的问题吗?
答案 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。