Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 错误LNK2005和LNK1169_C++ - Fatal编程技术网

C++ 错误LNK2005和LNK1169

C++ 错误LNK2005和LNK1169,c++,C++,在这方面有很多问题,但没有一个能解决我的问题。我正在尝试使用多个文件。我不知道问题出在哪里,所以我将包括所有最上面的行,包括,pragma,等等 当我为Cubes.cpp和in Cubes.h创建类时,出现了这个问题 main.cpp Cubes.cpp 立方体 通用函数.cpp 共同职能 全球 错误如下: LNK2005 类sf::RenderWindow?窗口@@3VRenderWindow@sf@@A已在Cubes.obj中定义 C:\Users\George\Documents\C++\

在这方面有很多问题,但没有一个能解决我的问题。我正在尝试使用多个文件。我不知道问题出在哪里,所以我将包括所有最上面的行,包括,pragma,等等

当我为Cubes.cpp和in Cubes.h创建类时,出现了这个问题

main.cpp

Cubes.cpp

立方体

通用函数.cpp

共同职能

全球

错误如下:

LNK2005

类sf::RenderWindow?窗口@@3VRenderWindow@sf@@A已在Cubes.obj中定义

C:\Users\George\Documents\C++\Projects\Don't fall\Don't fall\main.obj 1

LNK2005

class std::basic_字符串,class std::allocator>status?status@@3V?$basic_string@DU?$char_traits@D@性病病毒$allocator@D@2@@std@@A已在Cubes.obj中定义

C:\Users\George\Documents\C++\Projects\Don't fall\Don't fall\main.obj 1

LNK1169

找到一个或多个多重定义符号

C:\Users\George\Documents\C++\Projects\Don't fall\Debug\Don't fall.exe 1

我一直在这个问题上有一段时间,所以任何帮助将不胜感激

编辑

我回答了自己的问题,因为没有人找到解决方案。

解决方案解决了我自己的问题

在Global.h中,我将代码更改为:

#pragma once
#include <SFML\Graphics.hpp>


extern sf::RenderWindow Window;
extern std::string status;

减少选择一个错误。删除内容直到问题消失,然后探索删除内容与错误之间的关系。如果你想不出来,你现在有一个问题可以提出。你现在拥有的是无用的。根据错误消息,状态至少定义了两次,但在提供的代码中甚至找不到一次。@user4581301我已在状态为的代码中添加。此外,这些错误也会一起出现。我不想将代码最小化太多,因为否则我可能会错过真正的问题。错误的不是外部,而是头文件中的初始化。将初始化移到一个.cpp文件中,并从头文件中删除初始化,只保留外部文件。每个包含Global.h的.cpp文件定义的不仅仅是声明一个新的sf::RenderWindow窗口,当你链接它们时,你有太多的窗口。下面是一个很好的extern摘要以及如何使用它:@George_E:请不要将解决方案编辑到问题中,也不要在标题中添加[SOLVED]。您可以将解决方案发布为答案,然后接受它,然后回滚最近的编辑。
#include <iostream>
#include "Cubes.h"
#include "Common functions.h"
#include "Global.h"
#include <SFML\Graphics.hpp>
#include <vector>
#include <string>

// Later on in code, where I think it went wrong:

Render::Render()
{
    this->rot;
    this->boxCoords;
    this->rlBoxCol;
    this->gridSize;
    this->cubeSize;
    this->offset;
}


void Render::setRotation(std::vector<float> setRot)
{ // Set rotation
    rot = setRot;
}
std::vector<float> Render::getRotation()
{ // Get rotation
    return rot;
}

void Render::setCoordinates(std::vector<int> setBoxCoords)
{
    boxCoords = setBoxCoords;
}
std::vector<int> Render::getCoordinates()
{
    return boxCoords;
}

void Render::setColours(std::vector<std::string> setRlBoxCol)
{
    rlBoxCol = setRlBoxCol;
}
std::vector<std::string> Render::getColours()
{
    return rlBoxCol;
}

void Render::setSizeOfGrid(int setGridSize)
{
    gridSize = setGridSize;
}
int Render::getSizeOfGrid()
{
    return gridSize;
}

void Render::setSizeOfCubes(int setCubeSize)
{
    cubeSize = setCubeSize;
}
int Render::getSizeOfCubes()
{
    return cubeSize;
}

void Render::setOffset(std::vector<int> setOffset)
{
    offset = setOffset;
}
std::vector<int> Render::getOffset()
{
    return offset;
}


void Render::display()
{
    // Long code, not going to show it
}
#pragma once
#include <vector>
#include <string>

// Also later on in Cubes.h ...

class Render
{
private:
    std::vector<float> rot;
    std::vector<int> boxCoords;
    std::vector<std::string> rlBoxCol;
    int gridSize;
    int cubeSize;
    std::vector<int> offset;

public:
    Render();


    void setRotation(std::vector<float> setRot);
    std::vector<float> getRotation();

    void setCoordinates(std::vector<int> setBoxCoords);
    std::vector<int> getCoordinates();

    void setColours(std::vector<std::string> setRlBoxCol);
    std::vector<std::string> getColours();

    void setSizeOfGrid(int setGridSize);
    int getSizeOfGrid();

    void setSizeOfCubes(int setCubeSize);
    int getSizeOfCubes();

    void setOffset(std::vector<int> setOffset);
    std::vector<int> getOffset();


    void display();
};
#include <iostream>
#include "Common functions.h"
#include <vector>
#include <string>
#pragma once
#include <vector>
#pragma once
#include <SFML\Graphics.hpp>

extern sf::RenderWindow Window(sf::VideoMode(500, 500), "Maximize window to play the game");
extern std::string status = "NULL";
#pragma once
#include <SFML\Graphics.hpp>


extern sf::RenderWindow Window;
extern std::string status;
#include <iostream>
#include "Cubes.h"
#include "Common functions.h"
#include "Global.h"
#include <SFML\Graphics.hpp>
#include <vector>
#include <string>

sf::RenderWindow Window(sf::VideoMode(500, 500), "Maximize window to play the game");
std::string status = "NULL";