找不到d3dx11.lib?

时间:2013-03-29 18:43:56

标签: c++ directx direct3d directx-11 direct3d11

我正在使用Windows 8 / Visual Studio 2012,C ++ 11和Direct3D 11进行开发。

我包含像这样的Direct3D库

#pragma comment(lib, "dxgi.lib")
#pragma comment(lib, "d3d11.lib")
#pragma comment(lib, "d3dx11.lib") // <-- error LNK1104: cannot open file 'd3dx11.lib'
#pragma comment(lib, "d3dx10.lib")

但是,链接器似乎找不到 d3dx11.lib 。将库所在的路径添加到项目的“库目录”后,链接器仍无法找到这些文件。即使我将lib文件复制到项目目录本身之后,也无法正常工作。

我从2010年6月起安装了Windows 8 SDK和DirectX SDK。我错过了什么吗?

3 个答案:

答案 0 :(得分:8)

当我自己处理这件事时,我从这里开始:

Where is the DirectX SDK?

然后 - 在该页面的中间,阅读有关DirectXMath的信息:

DirectXMath

它几乎只包含正确的头文件并将“D3DX”前缀更改为“XM”。不是那么简单,但这是一般的想法。

你的第一个程序可能会包含这样的内容/使用:

#include <d3d11.h>
#include “DirectXMath.h”
#include “DirectXPackedVector.h”

using namespace DirectX; 
using namespace DirectX::PackedVector;

struct mystruct
{
   DirectX::XMFLOAT3 position;
   DirectX::PackedVector::HALF packedValue;
};

当然,使用“使用命名空间”并不是最佳做法,但在这个实例中,我发现我程序的每一行都有“DirectX ::”使我的程序几乎不可能(对我而言)阅读 - 所以我选择了“使用”。

祝你好运!

答案 1 :(得分:1)

可能你在属性中包含了错误的路径,而不是&#34; * DirectxSDK / Lib / x86&#34;,你包括&#34;&#34; * DirectxSDK / Lib&#34;。

答案 2 :(得分:0)

我使用VS2010也遇到了这个问题,但我刚刚找到了解决方案。您需要使用您遇到问题的库文件提供链接器。

项目 - &gt;属性 - &gt;配置属性 - &gt; 链接器 - &gt;其他库目录

然后将所需的库文件添加到那里。为我工作,希望也适合你,然后你不必乱用DirectXMath并为它找到新的教程。