我有两个头文件:
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”时,我也收到'找不到文件或目录不存在错误'。有什么想法吗?
答案 0 :(得分:1)
两个想法。首先,您在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;
答案 1 :(得分:0)
d3dx9.h没有附带VS或Platform SDK。您需要返回MSDN下载并获取DirectX SDK。