我有两个头文件:

DirectX_Engine.h

#pragma once
#include "Main.h"
#include <d3d9.h>

和:

Main.h
#pragma once
#include <Windows.h>
#include "DirectX_Engine.h"

int imRunning = 1;

编译后,出现以下链接器错误:
error LNK1169: one or more multiply defined symbols found
error LNK2005: "int imRunning" (?imRunning@@3HA) already defined in DirectX_Engine.obj
#include写入“d3dx9.h”时,我还收到“找不到文件或目录不存在错误”的信息。任何的想法?

最佳答案

两个想法。首先,您将DirectX_Engine.h包括在Main.h中,将Main.h包括在DirectX_Engine.h中。这显然是行不通的。

其次,int imRunning被包含在每个包含Main.h的.cpp文件中,编译器将其视为定义。然后,链接器出现,并且看到在每个文件中定义的imRunning,并且不知道该怎么办。解决方案是使用extern:

Main.h中:

extern int imRunning;

在一个.cpp文件中:
int imRunning = 1;

10-08 14:52