已经在其他文件中定义, fatal error LNK1169: 找到一个或多个多重定义的符号

Posted

tags:

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

定义了一个头文件,包含一个 bool 变量,然后在另一个 类的头文件中包含了此头文件 ,如下所示:
A.h
#ifndef _A_HEADER_
#define _A_HEADER_
bool bGolbal = true;
#endif // _A_HEADER_
============================
B.h
#pragma once
#include "a.h"
class B


=============
C.cpp
#include "a.h"
#include "b.h"

int main()

bGolbal = false;
return 0;


得到如上错误,请问如何解决,谢谢!
A.h
#ifndef _A_HEADER_
#define _A_HEADER_
extern bool bGolbal;
#endif // _A_HEADER_

B.cpp
extern bool bool bGolbal;

void set()

bGolbal = true;


c.cpp

bool bGolbal;

void main()

bGolbal = FALSE;
class B b;
b.set(bGolbal);

if(b)

printf("1111\n");

else

printf("00000000000\n");

头文件不得包含变量定义和函数体,否则被包含一次,这些变量、函数就被重新定义,从而导致这个问题。把变量定义放到一个源文件中,然后在头文件中写成
extern bool bGolbal ;追问

bool bGolbal ; 我想定义为全局变量 class B 中的某些函数会访问这个变量,并改变它 的 值,
您说的,我试了一下,因该是我没有理解清楚,能否详细说明一下,谢谢 !

追答

我说的很清楚了,你怎么试的,遇到什么错误了

追问

变量的值没有改变

追答

"你怎么试的"!我根本不知道你怎么改的,怎么知道你为什么变量值不变。列最新代码

参考技术A 我把vs2008关了,再打开,帮刚才的东西复制上去就能调试成功了,但不知道为什么 参考技术B class B的定义最后少了个分号,不知道是不是这个原因

errors collectiions

c/c++中出现“undefined reference to”的解决

  • 如果提示未定义的函数是某个库的函数。检查库时候已经安装,并在编译命令中采用-l和-L参数导入库。
  • 如果提示未定义的函数是程序中的函数。检查是否在头文件中声明,是否在编译中有对应的obj文件。
  • 如果提示未定义的函数是程序中的函数,还有一种很隐蔽的可能:检查改函数的代码的上下文是否有#ifdef或者#ifndef等预编译信息,这也很有可能导致相关代码没有被编译而出现“undefined reference to”提示。

以上是关于已经在其他文件中定义, fatal error LNK1169: 找到一个或多个多重定义的符号的主要内容,如果未能解决你的问题,请参考以下文章

vc2008中 fatal error LNK1169: 找到一个或多个多重定义的符号

fatal error LNK1169:找到一个或多个重定义的符号

Fatal error: Call to undefined function ThinkC() in /var/www/html/ceshi.hzheee.com/think/ThinkPHP/L(

全局变量重复定义,fatal error LNK1169: 找到一个或多个多重定义的符号

fatal error LNK1169: 找到一个或多个多重定义的符号

在网吧碰到dota2 launcher fatal error,怎么解决