多个符号定义,但我只定义我的符号一次

Multiple symbol definitions, but I only define my symbols once

本文关键字:符号 定义 我的 一次      更新时间:2023-10-16

我在使用头文件中的类编译程序时遇到了一些问题。我相信我设置项目和链接器设置正确,但似乎无论我尝试什么,它都会给我一个错误。我已经搜索了所有的论坛,我在我的智慧的尽头…

一些背景信息:我的IDE是code::blocks(用于windows),并且在链接器设置中包含了"header"。

代码:

Main.cpp:

#include<iostream>
#include"Header.h"
using namespace std;
int main()
{
Pizza ob;
}

Header.h:

#ifndef HEADER_H
#define HEADER_H
class Pizza
{
public:
Pizza();
protected:
private:
};
#endif

header.cpp:

#include "Header.h"
#include <iostream>
using namespace std;
Pizza::Pizza()
{
cout << "linked!";
}

编译时得到的错误:

objDebugHeader.o||In function `ZN5PizzaC2Ev':|
H:New Build Target proHeadertestHeader.cpp|6|multiple definition of `Pizza::Pizza()'|
objDebugHeader.o:H:New Build Target proHeadertestHeader.cpp|6|first defined here|
objDebugHeader.o||In function `ZN5PizzaC2Ev':|
H:New Build Target proHeadertestHeader.cpp|6|multiple definition of `Pizza::Pizza()'|
objDebugHeader.o:H:New Build Target proHeadertestHeader.cpp|6|first defined here|
objDebugMain.o||In function `main':|
H:New Build Target proHeadertestMain.cpp|8|multiple definition of `main'|
objDebugMain.o:H:New Build Target proHeadertestMain.cpp|8|first defined here|
||=== Build finished: 6 errors, 0 warnings (0 minutes, 7 seconds) ===|

这就是我用它做的所有事情。我搜索了这些错误,但几乎一无所获。请帮忙,如果还有什么需要我提供的信息,请询问我

在链接器设置中我包含了"header "。

没有。自从我使用Code::Blocks以来已经有一段时间了,但通常存在的每个IDE都会根据正在编译的源文件自动设置链接器行,并且Code::Blocks很可能已经包含"header"。o"answers"Main"。给你。

如果您显式地添加了这两个目标文件,那么您实际上已经将它们添加了两次到链接行,并且链接器看到这些符号被定义了两次并抱怨。

让IDE在那里完成工作,您不必显式指定目标文件。(而且,在大多数情况下,一般来说,当您开始一个新项目时的默认设置至少应该足以让您开始。)