HEADER FILE
#ifndef H_MODEL_UTIL
#define H_MODEL_UTIL
#include "Mesh.h"
Mesh *kingHigh;
void InitModel();
#endif
消息来源
#include "stdafx.h"
#include "ResourceLoader.h"
#include "ModelUtil.h"
void InitModel()
{
::kingHigh = new Mesh();
}
编译器输出:
1>Game.obj : error LNK2005: "class Mesh * kingHigh" (?kingHigh@@3PAVMesh@@A) already defined in Cube.obj
1>ModelUtil.obj : error LNK2005: "class Mesh * kingHigh" (?kingHigh@@3PAVMesh@@A) already defined in Cube.obj
1>C:\Users\Anthony\Desktop\C++ Learning\Extra\Rubiks Chess\Debug\Rubiks Chess.exe : fatal error LNK1169: one or more multiply defined symbols found
我正在尝试初始化一个全局变量,但我不断收到此错误。有简单的解决方案吗?
答案 0 :(得分:5)
错误不是你初始化网格的方式,它在你的声明中。你的头文件应该将mesh声明为外部
extern Mesh *kingHigh;
并在.cpp文件中声明网格
Mesh *kingHigh;
它必须阻止你得到的多重定义!
答案 1 :(得分:1)
你已经在InitModel中重新定义了Mesh.kinghigh是全局的,所以它已经定义了。只需删除InitModel的内容。你也可以写extern Mesh *kinghigh