gpt4 book ai didi

c++ - 需要帮助解决 C++ 引擎/框架构建中的链接器错误

转载 作者:行者123 更新时间:2023-11-28 07:20:09 25 4
gpt4 key购买 nike

我是不得已才来这里的,因为我需要尽快解决这个问题,以完成明天到期的任务。

我正在使用 C++ 构建一个简单的引擎来处理节点、纹理/ Assets 加载和状态系统。我想尝试继续编码与 Assets 相关的东西,但为了做到这一点,我需要状态系统正常工作。

APPLICATION.h

#pragma once
#include "AppGSM\EGameStateManager.h"

class EGameStateManager;

class EApplication
{
public:

static void Init();
static void RunApp();
EGameStateManager* GetGameStateManager();


protected:

static int windowWidth;
static int windowHeight;
static bool fullScreen;
static bool frameSync;
static char* windowTitle;

};

目前,每当我在我的 teststate 类和我的 main.cpp 中尝试使用上面看到的指向游戏状态管理器的指针时,我都会收到链接器错误。 (见下文)

测试状态.cpp

#include "AppGSM\ETestState.h"
#include "AppGSM\EApplication.h"
#include <iostream>

ETestState::ETestState(EApplication* pApp){}

ETestState::~ETestState(){}

void ETestState::Update(float deltaTime)
{
//if(INPUT::GetKey(KEY_T))
//{
// cout << "Entered Test State" << endl;
//}

m_testTimer += deltaTime;

if(m_testTimer > 3.0f)
{
m_pApp->GetGameStateManager()->ChangeState("Second TEST");
}
}

void ETestState::Draw(){}

MAIN.cpp

#include "GL\glew.h"
#include "GL\glfw.h"
#include <conio.h>
#include "AppGSM\EApplication.h"
#include "AppGSM\ETestState.h"

void main()
{
EApplication::Init();

EApplication* pApp = new EApplication();

pApp->GetGameStateManager()->SetState("TEST", new ETestState(pApp));

EApplication::RunApp();
}

这是保存测试状态中使用的应用程序指针的基本游戏状态类:

BASEGAMESTATE.h

#pragma once 

class EApplication;
class EGameStateManager;

class EBaseGameState
{
public:

EBaseGameState(){}
EBaseGameState(EApplication* pApp);

//always make the destructor virtual !!
virtual ~EBaseGameState();

//all game states must define update and draw
virtual void Update(float deltaTime) = 0;
virtual void Draw() = 0;


protected:

EApplication* m_pApp;


};

这些是链接器错误:

Error   9   error LNK2019: unresolved external symbol "public: class EGameStateManager * __thiscall EApplication::GetGameStateManager(void)" (?GetGameStateManager@EApplication@@QAEPAVEGameStateManager@@XZ) referenced in function _main  D:\Engine\main.obj

Error 10 error LNK2001: unresolved external symbol "public: class EGameStateManager * __thiscall EApplication::GetGameStateManager(void)" (?GetGameStateManager@EApplication@@QAEPAVEGameStateManager@@XZ) D:\Engine\ETestState.obj

通常我会将链接器错误归结为循环包含,但我已经写下了各种序列图,没有包含任何包含自身的内容。这可能是显而易见的……我真的很紧张。任何帮助将不胜感激。

最佳答案

链接器找不到函数。您需要实现 GetGameStateManager() 函数

关于c++ - 需要帮助解决 C++ 引擎/框架构建中的链接器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19615279/

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