0

头文件

#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

我正在尝试初始化一个全局变量,但我不断收到此错误。有简单的解决方案吗?

4

2 回答 2

5

错误不在于您初始化 mesh 的方式,而在于您的声明。您的头文件应将网格声明为外部

 extern Mesh *kingHigh;

并在您的 .cpp 文件中声明网格

 Mesh *kingHigh;

它必须防止你得到多重定义!

于 2013-08-14T22:19:26.273 回答
1

您在 InitModel.kinghigh 中重新定义了 Mesh 是全局的,所以它已经定义了。只需删除 InitModel 的内容。您也可以编写extern Mesh *kinghigh

于 2013-08-14T22:24:04.973 回答