6

这些是我更新到新 SDK 之前的标题:

#pragma once

#ifndef _EXTERNAL_DEPENDENCIES_H_
#define _EXTERNAL_DEPENDENCIES_H_

#if defined(DEBUG) || defined(_DEBUG)
#define _CRTDBG_MAP_ALLOC
#include <crtdbg.h>
#endif

#include <windows.h>
#include <time.h>
#include <mmsystem.h>
#include <cassert>
#include <ctime>
#include <algorithm>
#include <string>
#include <sstream>
#include <fstream>
#include <vector>
#include <assert.h>
#include <fcntl.h>
#include <pdh.h>
#include <stack>
#include <map>
#include <memory>
#include <random>
#include <xaudio2.h>
#include <x3daudio.h>
#include <xaudio2fx.h>
#include <ogg\ogg.h>
#include <ogg\os_types.h>
#include <vorbis\codec.h>
#include <vorbis\vorbisenc.h>
#include <vorbis\vorbisfile.h>

#include "d3dx11Effect.h"
#include <d3dx11.h>
#include <xnamath.h>
#include <dxerr.h>
#include <dinput.h>
#include <d3dcommon.h>
#include <dxgi.h>
#include <d3d11.h>
#include <d3dcompiler.h>
#include <d3dx10math.h>
#include <d3dx11async.h>
#include <D3DX11tex.h>
#include <gdiplus.h>

#pragma comment (lib, "gdiplus.lib")
#pragma comment (lib, "winmm.lib")
#pragma comment (lib, "dxguid.lib")  
#pragma comment (lib, "d3dx9d.lib")  
#pragma comment (lib, "d3dx10d.lib")  
#pragma comment (lib, "d3d11.lib")  
#pragma comment (lib, "d3dx11.lib")        
#pragma comment (lib, "dxgi.lib")
#pragma comment (lib, "dxgi.lib")
#pragma comment (lib, "dxerr.lib")
#pragma comment (lib, "d3dx10.lib")
#pragma comment (lib, "wsock32.lib")
#pragma comment (lib, "dinput8.lib")
#pragma comment (lib, "dxguid.lib")
#pragma comment (lib, "pdh.lib")
#pragma comment (lib, "comctl32.lib")
#pragma comment (lib, "xaudio2.lib")
#pragma comment (lib, "x3daudio.lib")
#pragma comment (lib, "libogg.lib")
#pragma comment (lib, "libogg_static.lib")
#pragma comment (lib, "libvorbis.lib")
#pragma comment (lib, "libvorbisfile.lib")

#pragma warning (disable : 4482)

#endif

至少有一半在新的 SDK 中丢失了……

大多数核心 DirectX 标头都已重命名,我解决了这个问题,但其中一半只是丢失了,例如 Dxerr.h 和 d3dx11async.h 甚至 d3dx10math.h/xnamath.h(哦,当我包含 DirectXMath.h 时它仍然表示 XMFLOAT3 未定义)。我现在不知道该怎么办,它是否说明了如何从 2010 年 6 月的 DirectX SDK 迁移到 Windows SDK 8.0?

4

3 回答 3

10

DirectXMath.h 中的 XMFLOAT3 位于命名空间 DirectX 中。

尝试在头文件中添加以下内容:

using namespace DirectX;

您还可以包含<xnamath.h>而不是直接包含<DirectXMath.h><D3DX10Math.h>

于 2012-12-02T09:57:52.707 回答
3

您是否尝试过http://msdn.microsoft.com/en-us/library/windows/desktop/ee663275(v=vs.85).aspx#sdk_vs11中的注释?尤其是第 5 点和第 7、8、9、10 点很重要。

于 2012-08-27T13:13:57.313 回答
0

grep通过您从现在缺少的标头中使用的功能的新标头。否则,函数的 MSDN 文档可能会告诉您需要什么头文件。

于 2012-08-26T22:25:53.613 回答