我从来没有在代码块中遇到过这个问题,但是在 Visual Studio 类中给我错误 LNK2005 ...我已经阅读了很多答案,其中大部分都说要使用我认为不适用于成员函数的“extern”

Error: 1>Source.obj : error LNK2005: "public: __thiscall Game::Game(void)" (??0Game@@QAE@XZ) already defined in game.obj

Error: fatal error LNK1169: one or more multiply defined symbols found

如何在不强制/允许多个定义的情况下解决此问题?
//game.h

#ifndef GAME_H
#define GAME_H

#include <SFML/Graphics.hpp>

class Game
{
    public:
        Game();

    private:
        sf::RenderWindow mWindow;
        sf::CircleShape mPlayer;
};

#endif

.
//game.cpp

#include "..\Headers\game.h"

Game::Game()
    : mWindow(sf::VideoMode(640, 480), "Beginning")
    , mPlayer()
{
    mPlayer.setRadius(40.f);
    mPlayer.setPosition(100.f, 100.f);
    mPlayer.setFillColor(sf::Color::Cyan);
}

.
//source.cpp

#include "game.cpp"

int main()
{
    Game game;
}

最佳答案

替换你的 source.cpp

#include "game.cpp"

经过
#include "game.h"

您永远不应该包含 *.cpp。

关于c++ - 成员函数已在 .obj (visual studio) 中定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28820416/

10-11 22:56
查看更多