Ric*_*ich 1 c++ linker visual-studio-2008
我正在获取LNK2005:在Visual Studio 2008中构建我的项目时已经在(...)错误中定义了.我引用了其他相关问题,但是我觉得有点复杂,因为如果没有别的话我正在使用的文件.
首先,我认为以格式[current_file] - > includes_this_file映射我项目文件中的#include语句对我有所帮助.
我的所有头文件都使用标准的#ifndef [Header] #define [Header] ... #endif.
[Modulator.h]
Modulator类的原型
[ChorusUnit.h] - > Modulator.h
合唱类的原型,其成员对象类型为Modulator
[AudioHandler.h] - > ChorusUnit.h
AudioHandler类的原型,它具有Chorus类的成员对象
[Chorus.cpp] - > AudioHandler.h
调制器和合唱类成员的定义
[AudioHandler.cpp] - > Chorus.cpp
AudioHandler类成员的定义
[ChorusUnit.cpp] - > AudioHandler.cpp
包含main()函数的文件,该函数实际运行我的项目代码.
包含的顺序是因为在Modulator.h,ChorusUnit.h和AudioHandler.h中找到的类的函数的所有定义都需要引用其他类的成员,所以我需要首先为所有类定义的原型才能看到彼此.
该错误明确指出在Chorus.obj文件中的Chorus.cpp和AudioHandler.cpp中找到的每个定义都已在AudioHandler.obj中定义.还有另一组相同的错误类型,表示在Chorus.cpp中找到的每个单一定义,文件ChorusUnit.obj中的AudioHandler.cpp已在AudioHandler.obj中定义.
可能有一个非常直接的解决方案,但我并不是特别经验(主要是Java程序员).至于我对这个问题的有限知识,我只定义了一次,所有内容都只包含一次,所以我个人不知道为什么这些已经定义了.有些请赐教!
错误可能是你在AudioHandle.cpp中说#include Chorus.cpp - 这不是你想要的.
原因是,所有.cpp文件(除非你在IDE中做了一些特殊的事情)都是单独编译的,然后是链接的.当你#include另一个.cpp文件时,字面上包含文件的文本; 因此,包含文件中定义的所有对象也会出现在包含文件中.链接这两个文件时,常见对象会导致冲突.