将项目添加为参考时出现重新定义错误

时间:2018-10-17 01:01:06

标签: c++ visual-studio c++-cli

我在VS2015上工作。 我有一个包含一些文件和A的C ++项目MyClass.h。它是用/clr标志构建的。 我还有另一个C ++控制台项目B,它也是用/clr标志构建的。 B的{​​{1}}具有以下内容:

B.cpp

我可以成功构建项目//B.cpp #include "MyClass.h" void main() { MyClass* obj = new MyClass(); } 。但是,当我将项目B添加为项目A的引用(右键单击->添加引用)时,突然得到B的类,该类在项目{{1 }}。

如何添加引用会导致此类错误?

UPDATE1

所有头文件都具有“头保护”。

UPDATE2

我认为redefinition error是控制台,而A是静态库。但是,已经很晚了,我没有注意到我同时创建了ProjectAProjectB作为控制台应用程序。

我知道如果ProjectA是dll,则需要导出MyClass,以便可以在ProjectB中使用它。该示例可能很愚蠢,但是由于我是错误地获得了此信息,所以我仍然想了解为什么在这种情况下会出现重定义错误。我已将测试上传到here

ProjectB引用了ProjectA

enter image description here

ProjectA

如果我删除对ProjectB的引用,或者我注释掉//ProjectA.cpp #include "MyHeader.h" int main() { return 0; } //ProjectB.cpp #include "MyHeader.h" //MyHeader.h #pragma once public enum class MyClass : int { }; ,我将不再收到重定义错误。

0 个答案:

没有答案