问题标签 [multiple-definition-error]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
80 浏览

c++11 - 将定义移动到它自己的编译单元,同时将声明保留在头文件中?

在我的一个项目的头文件中,我有以下内容;

其中generic_type_test定义为;

在同一个头文件中。

编译时出现一堆multiple definition链接器错误(显然)

所以问题是,简单来说,我将如何将我的定义移动到它自己的编译单元(“.cpp”文件),同时将我的声明保留在头文件中?

致 Jarod42

应用你的想法,收益;

用线条;

我也知道最简单的解决方法是转发函数,但我真的很喜欢这种函数指针的简单性。

0 投票
2 回答
13892 浏览

c++ - C++ 链接错误与 Linux 上的多个定义

我正在尝试编译一个代码,它得到一个带有多个定义的链接错误。不幸的是,我无法修复它,我们将不胜感激。

我有以下文件:头文件:CEST.h;CEST_UI.h; 全球变量.h;
源文件:CEST.cpp;CEST_UI.cpp;全局变量.cpp

所有声称有多个定义的参数都在“GlobalVariable.h”中定义并在“GlobalVariable.cpp”中初始化。

我包含“GlobalVariable.h”两次:一次在 CEST.cpp 中,第二次在 CEST_UI.cpp 中。

我在想“GlobalVariable.h”中的以下守卫会保护我免受多定义链接错误的影响:

我还附上了“GlobalVariable.h”和“GlobalVariable.cpp”,以便您查看。

在“GlobalVariable.h”中</p>

在 GlobalVariable.cpp

0 投票
2 回答
469 浏览

c++ - 多重定义 - 为什么我不能在标题中定义它们

我知道...基础知识,但我不明白。我读到我可以将我的函数定义放在我的标题中,然后包含它。到目前为止,我从未这样做过,因为我喜欢我在 .cpp 文件中的定义,与它在头文件中的声明分开。

现在我只有两个函数,我不想要这些定义的额外文件。

头文件.h

这是我的头文件的摘录。我得到了一些其他enum的 s 和structs 但它们对于这些函数并不那么重要,因为它们只是将一个整数转换为一个 QString ,它将显示在其他地方。我也有一个包含警卫。

现在我得到了很多像这样的错误:

'reviewToString(int)' 的多重定义

这是为什么?为什么我不能在此标头中声明和/或定义它们?

0 投票
4 回答
53646 浏览

c++ - C++中的多个定义错误以及解决此问题的解决方案

我是 C++ 新手。我对 C++ 中的多个定义错误有一些疑问。

假设我在一个程序中有 3 个文件。1 个头文件和 2 个 .cpp 文件。我在两个 .cpp 文件中都包含了头文件。

  1. 我在头文件中声明了一个类,并以完全相同的方式在每个 .cpp 文件中定义了该类。那么这种类型的实现会不会导致多重定义错误呢?如果是这样,是因为它有两个类定义副本并且编译器不知道在链接两个 .o 文件期间要采用哪一个?

我们可以通过extern在头文件中使用并仅在其中一个文件中定义类来解决这个问题吗?如果我们可以通过使用这种方法解决问题,我们是否必须将.cpp(带有类定义)包含到其他.cpp文件中(没有类定义)?

  1. 我已经在头文件中声明并定义了一个类。这种情况是否与上述相同(在1中提到)?

  2. 我在头文件中声明了一个类,并在每个 .cpp 文件中定义了该类,但定义(函数体)不同。那么这种类型的实现会导致多重定义错误吗?如果是这样,我们如何解决 .cpp 文件中函数主体不同的问题?

0 投票
4 回答
3988 浏览

c++ - C++头文件中的内联函数

为什么在头文件中定义类的函数是一种不好的做法?

假设我有一个头文件,我在类定义本身中定义了类的函数,例如,

头文件.hpp

所以像这样在类中定义函数会使函数“内联”。所以如果我们在两个 .cpp 文件中包含这个头文件,会导致“多重定义错误”吗?定义这样的函数是一种不好的做法这在类定义中?

0 投票
2 回答
1973 浏览

c++ - SDL C++ Multiple definition error

In my file I can't figure out why I'm getting multiple definition errors. I'm getting them for an "SDL_Surface" called "screen".

screen is located within render.h. I've tried making it extern but it still throws an error. I've looked up quite a bit but I can't find a solution.

Here are the files in question:

main.cpp

render.cpp

render.h

Here's the error:

obj\Debug\render.o||In function Z4INITv':| C:\Users\Joshua\Documents\CodeBlocks\Simulation\Zombie Survival\render.cpp|11|multiple definition ofscreen'| obj\Debug\main.o:C:\Users\Joshua\Documents\CodeBlocks\Simulation\Zombie Survival\main.cpp|20|first defined here| ||=== Build finished: 2 errors, 0 warnings (0 minutes, 1 seconds) ===|

0 投票
1 回答
49245 浏览

c++ - 此处首先定义的多重定义 gcc

我有这些文件

这是文件defines.hpp

这个defines.hpp 文件包含在producer.hpp 和consumer.hpp 中。producer.hpp 和consumer.hpp 文件分别包含在producer.cpp 和consumer.cpp 和main.cpp 中。编译时出现错误。

这是我的makefile

如何解决这个问题呢 ?

0 投票
2 回答
2113 浏览

c++ - 尝试链接 .cpp 文件时出现多重定义错误(头文件中没有 .cpp)

所以我在上一个基本的编程课,我们正在学习如何将文件链接在一起。问题是我遇到了一个似乎没有人能够修复的错误。我已经去过我的教授、学生助理和校园里的编程辅助实验室,但运气不好。

我还在这里搜索了至少 10 篇与多个定义错误有关的不同帖子,但在每种情况下都是:

  1. 尝试#include .cpp 文件或

  2. 函数定义在头文件中。

如您所见,这些情况都不适用于此处(我已删除所有注释以使代码更易于阅读):

头文件:square.h:

函数定义文件:square.cpp

程序文件:test1.cpp

最后,每当我尝试编译时都会出现错误:

编译命令,仅供参考g++ test1.cpp square.cpp -o testfile

使用 makefile 似乎没有任何区别,我最终只是盯着完全相同的编译错误。我试过使用两个不同的makefile:

生成文件 1

生成文件 2

现在我只知道这是某种链接器错误,但我不知道该怎么做。我问过的每个人都说我的代码是正确的。但显然有些事情是错误的。

任何帮助将不胜感激。:D

0 投票
2 回答
6725 浏览

c - "First defined here" error in Eclipse with C

I'm trying to compile a C program using libxml2 in Eclipse. It seems like my code doesn't have problems, but there are errors when I build my project.

The error output is in this screenshot: https://drive.google.com/file/d/0BwV-0_2diIaaQlZHM2Fwa2R0LWc/edit

Before this error, I had an “Undefined reference to” error, but it was because I forgot to link the library libxml2. Now it's the problem in the screenshot. I don't what to do.

[EDITED] I solved my problem I just need to put -nostartfiles in the linker flags.

0 投票
1 回答
9474 浏览

c - 在 NetBeans 中正常工作时使用手动 makefile 时所有函数的多重定义

在学习制作文件时,我偶然发现了这个错误,我的老师似乎无法为我指出正确的方向。搜索并阅读了几个相关问题后,我似乎仍然看不到答案。令我惊讶的是我在 NetBeans 中没有出错。

生成文件:

我得到的错误:

所有这些函数只在主文件“connect4.c”中定义一次,该文件不包含在任何地方。我不知道该尝试什么,但我认为这对受过训练的人来说可能是显而易见的。我觉得我会受到很多批评,但我认为其他情况不适用于我。