多个符号定义,但我只定义我的符号一次
Multiple symbol definitions, but I only define my symbols once
我在使用头文件中的类编译程序时遇到了一些问题。我相信我设置项目和链接器设置正确,但似乎无论我尝试什么,它都会给我一个错误。我已经搜索了所有的论坛,我在我的智慧的尽头…
一些背景信息:我的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在那里完成工作,您不必显式指定目标文件。(而且,在大多数情况下,一般来说,当您开始一个新项目时的默认设置至少应该足以让您开始。)
相关文章:
- vscode g++链路故障:体系结构x86_64的未定义符号
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- 在C++中使用内联方法时出现未定义的符号错误
- 引擎节点:未定义的符号:_ZTV6Config
- 为函数定义符号不明确的指针参数
- 未定义的引用,尽管存在符号,但 std::experimental::可选
- 体系结构x86_64的未定义符号:std:terminate(),typeinfo,运算符delete[],运算符new
- Windows 链接器是否使用 LoadLibrary 解析 DLL 中未定义的符号?
- C++ 中 dlsym 的未定义符号
- MacOS 上的 Xcode 11 项目不在一个函数中使用 sin 和 cos:未定义的符号"___sincosf_stret"
- 仅在 MacOS 上析构函数的未定义符号
- 重复符号 --- 定义和声明之间的差异
- 符号定义多次
- C++部分模板专用化和多符号定义错误
- 使用Visual Studio 2015时有多个符号定义
- CMake和Dylib:符号定义
- g++说引用是未定义的,即使' nm '列出了我的目标文件中的符号定义
- 为什么't my include保护防止递归包含和多个符号定义
- 多个符号定义,但我只定义我的符号一次
- 用c++科学和工程符号定义Flex实类型