【发布时间】:2009-04-06 19:56:45
【问题描述】:
在 Visual Studio 2008 中构建我的项目时,我收到 LNK2005: already defined in (...) 错误。我参考了其他相关问题,但如果没有其他问题,我的问题似乎有点复杂我正在处理的文件数量。
首先,我认为以 [current_file] ->includes_this_file 格式映射我在项目文件中的#include 语句对我很有帮助
我所有的头文件都用标准的#ifndef [Header] #define [Header] ... #endif 保护。
[调制器.h]
Modulator 类的原型
[ChorusUnit.h] ->Modulator.h
具有 Modulator 类型成员对象的 Chorus 类的原型
[AudioHandler.h] ->ChorusUnit.h
具有 Chorus 类成员对象的 AudioHandler 类的原型
[Chorus.cpp] ->AudioHandler.h
Modulator 和 Chorus 类成员的定义
[AudioHandler.cpp] ->Chorus.cpp
AudioHandler 类成员的定义
[ChorusUnit.cpp] ->AudioHandler.cpp
包含实际运行我的项目代码的 main() 函数的文件。
include 的顺序是因为在 Modulator.h、ChorusUnit.h 和 AudioHandler.h 中找到的类的所有函数定义都需要引用其他类的成员,所以我需要首先为所有类定义原型班级见面。
该错误特别指出在 Chorus.obj 文件中的 Chorus.cpp 和 AudioHandler.cpp 中找到的每个定义都已在 AudioHandler.obj 中定义。 还有另一组相同的错误类型,表示在 ChorusUnit.obj 文件中的 Chorus.cpp 和 AudioHandler.cpp 中找到的每个定义都已在 AudioHandler.obj 中定义。
可能有一个非常简单的解决方案,但我在一般链接方面并不是特别有经验(主要是 Java 程序员)。就我对该主题的有限知识而言,我只定义了一次所有内容,并且所有内容都只包含一次,所以我个人对为什么已经定义这些内容感到茫然。有的请赐教!
【问题讨论】:
标签: c++ visual-studio-2008 linker