C++找到一个或多个多重定义的符号

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++找到一个或多个多重定义的符号相关的知识,希望对你有一定的参考价值。

初学者,为啥定义重复了呢?怎么改啊??

参考技术A 不能在头文件.h里面定义全局变量,那样编译的时候两个cpp文件都会包含头文件里面定义的变量而冲突
全局变量可以在class.cpp里面定义:
int map[3][3]=-1,-1,-1,-1,-1,-1,-1,-1,-1;
然后main.cpp开头声明:
extern int map[3][3]=-1,-1,-1,-1,-1,-1,-1,-1,-1;本回答被提问者采纳

OpenGL 图像 (GLI):找到一个或多个多重定义的符号

【中文标题】OpenGL 图像 (GLI):找到一个或多个多重定义的符号【英文标题】:OpenGL Image (GLI) : one or more multiply defined symbols found 【发布时间】:2013-09-16 17:10:14 【问题描述】:

我正在尝试设置一个使用 GLI 的类,但即使使用简单的代码,我也无法让该库正常工作。

-----------------------------------------------------------------------
                                 header.hpp
-----------------------------------------------------------------------
#pragma once

#include "gli\gli.hpp"

-----------------------------------------------------------------------
                                 source.cpp
-----------------------------------------------------------------------
#include "header.hpp"

-----------------------------------------------------------------------
                                 main.cpp
-----------------------------------------------------------------------
#include "header.hpp"

int main(int argc, char* argv[])

    return 0;

我以前从未遇到过这样的问题,但是当它已经包含在另一个 .cpp 文件中时,我似乎无法在我的 main.cpp 中包含包含库本身的标头。我可以将库直接包含在我的 source.cpp 而不是 header.hpp 中,但我认为这不是一个很好的解决方案。

Visual-Studio 构建输出显示:

致命错误 lnk1169 发现一个或多个多重定义符号

【问题讨论】:

为什么这不是一个很好的解决方案? #include 文件的位置越少越好,因为它减少了编译时依赖性。如果不是#includes "header.hpp" 实际上需要了解有关 GLI 的所有内容,请不要这样做。不过,您遇到符号冲突似乎很奇怪,gli/gli.hpp 中的某些内容不能是内联/静态的。另外,“gli\gli.hpp”真的有效吗?预处理器不会尝试将“\g”视为转义字符吗? 【参考方案1】:

查看此错误https://github.com/g-truc/gli/issues/27。解决方案是将视图 ctor 和赋值运算符标记为内联。

【讨论】:

以上是关于C++找到一个或多个多重定义的符号的主要内容,如果未能解决你的问题,请参考以下文章

使用 MatLab dll 时出现 C++ 错误:找到一个或多个多重定义符号

error 找到一个或多个多重定义的符号的解决方法

Visual C++ 2010 - 致命错误 LNK1169:找到一个或多个多重定义符号

[debug] 解决在C++编写过程中的“找到一个或多个多重定义的符号”

C语言纠错,说是找到一个或多个多重定义的符号

我是一个刚学C++的萌新,出现“找到一个或多个多重定义的符号”怎么解决