我正在使用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。我错过了什么吗?
答案 0 :(得分:8)
当我自己处理这件事时,我从这里开始:
然后 - 在该页面的中间,阅读有关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并为它找到新的教程。