c ++中的链接错误& DirectX文件包含问题

时间:2011-06-25 22:19:03

标签: c++ visual-studio-2010 directx

我有两个头文件:

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”时,我也收到'找不到文件或目录不存在错误'。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

两个想法。首先,您在DirectX_Engine.hMain.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。