我有两个头文件:
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;