9

我正在使用 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。我错过了什么吗?

4

3 回答 3

8

当我自己处理这个问题时,我从这里开始:

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::”让我的程序几乎无法(对我)阅读——所以我去了与“使用”。

祝你好运!

于 2013-03-30T15:13:09.370 回答
1

可能您在属性中包含了错误的路径,而不是“*DirectxSDK/Lib/x86”,您包含了“”*DirectxSDK/Lib”。

于 2016-03-20T09:46:58.860 回答
0

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

项目->属性->配置属性->链接器->附加库目录

然后将您想要的库文件添加到那里。为我工作,希望也对你有用,然后你不必弄乱 DirectXMath 并为它寻找新的教程。

于 2017-05-03T02:23:15.717 回答