gpt4 book ai didi

c++ - "Multiple definition of"C++编译错误

转载 作者:IT老高 更新时间:2023-10-28 22:22:50 27 4
gpt4 key购买 nike

我似乎无法在我的一门类(class)中摆脱这些看似随机的编译错误。我收到大约 4 个错误,例如:

multiple definition of `draw_line(float, float, float, float)'

multiple definition of `near_far_clip(float, float, float*, float*, float*, float*, float*, float*)'

在方法中间被标记。

我也一直在另一个方法的中间得到 multiple definition of `stack'stack 是一个完全不同的文件中的全局变量。我收到错误的文件中甚至都没有提到它。

我尝试将容易出错的文件分成 .h 和 .cpp 文件(最初只是一个 .cpp),但没有任何关于错误的更改...

我没有重复的方法。我只有一个 #include 的lines.h,并且开头有一个 #ifndef 子句。所有这些错误都出现在 .cpp 文件中。

有什么想法吗?

好的,我得到了代码:

lines.cpp 是我从导师那里收到的转换后的 .c 文件。我包含了 makefile 以防万一,因为我总是遇到问题。我还准确地注释了文件中错误标记的位置,但它们看起来很随机,所以我不知道它是否特别重要。我放弃了 .h 文件,因为它没有解决任何问题或提供帮助。我相信没有它会更容易找到错误。

这里是请求的 main.cpp file (没有.h)。


我重新制作了lines.h文件,因为我仍然收到:

multiple definition of `draw_line(float, float, float, float)'

multiple definition of `near_far_clip(float, float, float*, float*, float*, float*, float*, float*)'

lines.cpp 文件中的错误,但 multiple definition of `stack' 错误现在位于 ThreeD.cpp 文件中的随机位置(现在由注释标记)。 更新:此错误已修复,文件已修改为显示:

我搞砸了一些全局变量 extern 的标签,但它似乎没有影响任何东西。

最佳答案

您可能会将函数定义包含在头文件中。包括 inline 关键字,这样它们就不会被每个目标文件导出。或者,将函数放在它们自己的 .cpp 文件中。

对于您的全局变量,您需要在头文件中使用 extern 关键字。否则,每个目标文件都会导出自己的变量,而链接器会混淆哪个是正确的。

关于c++ - "Multiple definition of"C++编译错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/685439/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com