未解析的外部符号D3DXSaveSurfaceToFileW

时间:2017-12-13 08:07:27

标签: c++ directx

我是DirectX的新手。我有这段代码:

IDirect3DSurface9* pSurface;
m_swapChain->GetBuffer(0, __uuidof(pSurface), reinterpret_cast<void**>(&pSurface));
char text[] = "Desktop.bmp";
wchar_t wtext[20];
mbstowcs(wtext, text, strlen(text) + 1);//Plus null
LPWSTR ptr = wtext;
D3DXSaveSurfaceToFile(ptr, D3DXIFF_PNG,pSurface,NULL,NULL);

这些是我收录的标题:

#include <D3dx9tex.h>

#include "pch.h"
#include "Game.h"


extern void ExitGame();

using namespace DirectX; using namespace DirectX::SimpleMath;

using Microsoft::WRL::ComPtr;

我不断收到错误IDirect3DSurface9:未声明的标识符以及D3DXSaveSurfaceToFile。有谁知道问题是什么?

错误消息: link to error msgs screeenshot

更新: 我将缺少的标题添加到Game.h文件中,未声明的标识符错误现在消失了,但现在我收到一个新错误:未解析的外部符号D3DXSaveSurfaceToFileW。

Screenshot to error

2 个答案:

答案 0 :(得分:1)

D3DXSaveSurfaceToFileW是不推荐使用的D3DX9帮助程序库中的实用程序函数。它根本不是Direct3D的一部分,而且是一个可选的并排组件,仅在传统的DirectX SDK中提供。

如上所述,您需要链接d3dx9.lib AND 安装旧版DirectX SDK AND 正确设置include / lib路径以便使用传统的DirectX SDK。值得注意的是,如果您使用的是使用Windows 8.x或Windows 10 SDK的VS 2012或更高版本,则include / lib路径顺序会有很大差异。传统的DirectX SDK标头很大程度上已经过时了。

请参阅MSDNWhere is the DirectX SDK (2015 Edition)?The Zombie DirectX SDKLiving without D3DX

  

如果您是DirectX的新用户,请不要使用传统的Direct3D 9。使用DirectX 11.有关起点,请参阅DirectX Tool Kit tutorials

答案 1 :(得分:0)