2017-12-13 17 views
0

私はDirectXを初めて使用しています。未解決の外部記号D3DXSaveSurfaceToFileW

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); 

これらは私のインクルードヘッダー:D3DXSaveSurfaceToFileと同様に宣言されていない識別子を:

#include <D3dx9tex.h> 

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


extern void ExitGame(); 

using namespace DirectX; using namespace DirectX::SimpleMath; 

using Microsoft::WRL::ComPtr; 

が、私はエラーIDirect3DSurface9に得続ける私はこのコードを持っています。誰が問題が何であるか知っていますか?

エラーMSGの: link to error msgs screeenshot

UPDATE: 私はGame.hファイルに欠落しているヘッダを追加し、宣言されていない識別子エラーは今消えたが、今私は新しいエラーを取得:未解決の外部シンボルD3DXSaveSurfaceToFileWを。エラーを解決するには、このリンクを使用し

Screenshot to error

+0

は、この問題を解決するためにを含め、あなたはまだ同じ問題を Asesh

+0

を含む場合d3dx9tex.hを含める必要はありません。 – 3lwan

+0

'' #include '' '#include ' 'あなたはそれを試しましたか?拡張APIを使用しているため、両方のヘッダーを含める必要があります – Asesh

答えて

1

D3DXSaveSurfaceToFileW非推奨D3DX9ヘルパーライブラリ内のユーティリティ関数です。実際にはDirect3Dの一部ではありません。従来のDirectX SDKにのみ付属するオプションのサイドバイサイドコンポーネントです。

述べたように、あなたはd3dx9.libとリンクする必要があるが、従来のDirectX SDKはをインストールしているあなたは、従来のDirectX SDKを使用するために正しくセットアップ/ libにパスが含まれています。 Windows 8.xまたはWindows 10 SDKを使用するVS 2012以降を使用している場合は、インクルード/ libパスの順序がまったく異なることに注意してください。従来のDirectX SDKヘッダーはほとんど古くなっています。

MSDN,Where is the DirectX SDK (2015 Edition)?,The Zombie DirectX SDKおよびLiving without D3DXを参照のこと。

If you are new to DirectX, don't bother with legacy Direct3D 9. Use DirectX 11. For a starting point, see the DirectX Tool Kit tutorials