链接器错误-请帮助:错误LNK2001:无法解决的外部符号
Linker Error - please help: error LNK2001: unresolved external symbol
我不确定我做错了什么,我认为一切都是准确定义一次,一切都正确链接,但我想情况并非如此…
以下是我的编译器给我的错误:1>StaticElements.obj : error LNK2001: unresolved external symbol "private: static int Powerup_Health::g_refCount" (?g_refCount@Powerup_Health@@0HA)
1>StaticElements.obj : error LNK2001: unresolved external symbol "private: static class DBModel * Powerup_Health::g_pModel" (?g_pModel@Powerup_Health@@0PAVDBModel@@A)
1>StaticElements.obj : error LNK2001: unresolved external symbol "private: static int Powerup_QuadDamage::g_refCount" (?g_refCount@Powerup_QuadDamage@@0HA)
1>StaticElements.obj : error LNK2001: unresolved external symbol "private: static class DBModel * Powerup_QuadDamage::g_pModel" (?g_pModel@Powerup_QuadDamage@@0PAVDBModel@@A)
代码:StaticElements.h
#pragma once
#include "D3DUtil.h"
class ContentManager;
class Level;
class GraphCamera;
class Powerup_Health;
class Powerup_QuadDamage;
class StaticElements
{
public:
StaticElements(){};
~StaticElements(){};
void PreLevelInitialisation(Level* pLevel);
void PostLevelInitialisation();
private:
Powerup_Health* m_pPwrHealth;
Powerup_QuadDamage* m_pPwrQuadDamage;
};
StaticElements.cpp
#include "StdAfx.h"
#include "StaticElements.h"
#include "Level.h"
#include "DBModel.h"
#include "Powerup_Health.h"
#include "Powerup_QuadDamage.h"
void StaticElements::PreLevelInitialisation(Level* pLevel)
{
//////POWERUPS
Powerup_Health::InitModel();
m_pPwrHealth = new Powerup_Health();
pLevel->AddChild(m_pPwrHealth);
Powerup_QuadDamage::InitModel();
m_pPwrQuadDamage = new Powerup_QuadDamage();
pLevel->AddChild(m_pPwrQuadDamage);
}
Powerup_QuadDamage.h
#pragma once
#include "Powerup.h"
class Powerup_QuadDamage : public Powerup
{
private:
//static
static DBModel* g_pModel;
static int g_refCount;
public:
virtual ~Powerup_QuadDamage() {
--g_refCount;
if (g_refCount == 0) delete g_pModel;
}
Powerup_QuadDamage()
:Powerup(g_pModel, 90.0f)
{
++g_refCount;
}
static void InitModel() {
g_refCount = 0;
DBModelDesc desc;
g_pModel = new DBModel(desc, nullptr);
}
private:
//disabled
Powerup_QuadDamage(const Powerup_QuadDamage& b);
Powerup_QuadDamage& operator= (const Powerup_QuadDamage& b);
};
Powerup_Health.h
#pragma once
#include "Powerup.h"
class Powerup_Health : public Powerup
{
private:
//static
static DBModel* g_pModel;
static int g_refCount;
public:
virtual ~Powerup_Health() {
--g_refCount;
if (g_refCount == 0) delete g_pModel;
}
Powerup_Health()
:Powerup(g_pModel, 20.0f)
{
++g_refCount;
}
static void InitModel() {
g_refCount = 0;
DBModelDesc desc;
g_pModel = new DBModel(desc, nullptr);
}
private:
//disabled
Powerup_Health(const Powerup_Health& b);
Powerup_Health& operator= (const Powerup_Health& b);
};
谁能告诉我是什么导致错误和如何修复它?谢谢。
静态成员变量必须在模块级显式初始化。在cpp文件中添加如下内容:
int Powerup_Health::g_refCount = 0;
相关文章:
- Project Euler问题4的错误解决方案
- 如何解决gcc编译器优化导致的centos双编译器设置中的分段错误
- 如何解决错误:SCIP C++中的 SCIP 阶段无效 <10>
- 使用 bfs 解决连接组件问题时得到错误的答案
- 在 leetcode 上提交解决方案时出现堆栈缓冲区溢出错误
- 你能解释一下什么运行时错误是如何解决它的吗?
- 我看到"use of undeclared identifier"错误,有人可以告诉我如何解决它吗?
- 我的固定时间步长与增量时间和插值的解决方案是错误的吗?
- Arduino 用于语句错误。令牌之前的预期')' ';'。如何解决这个问题?
- 如何在 macOS 卡塔琳娜上解决此错误?
- 如何解决一元"*"(有"字符")错误的无效类型参数?
- Clang 8 带有静态 constexpr 和数组的链接器错误 - 错误是什么以及如何解决它?
- 我正在尝试制作一个自平衡机器人,但编译时存在错误。我不知道如何解决它
- Visual Studio 2017 中的 QtMetaObject 未解决的外部错误
- 我想在 c++ 中对单向链表进行冒泡排序,但我一直面临左值错误,无法解决它
- C++抽象类参数错误解决方法
- 运行VS2008解决方案时运行时错误;解决方案正在构建良好
- g++链接错误-解决方法有效的原因
- 故障错误解决
- 这是HackerRank的错误解决方案