0

我有简单的 DirectX 项目:

#include <d3dx10.h>
#include <d3dx10math.h>

#pragma comment(lib, "d3d10.lib")
#pragma comment(lib, "d3dx10.lib")

int main()
{
    D3DXVECTOR3 u(1.0f, 2.0f, 3.0f);
    D3DXVECTOR3 v(2.0f, 1.0f, 3.0f);
    D3DXVECTOR3 a, b, c, d, e;

    float l = D3DXVec3Length(&u);
    float s = D3DXVec3Dot(&u, &v);

    D3DXVec3Normalize(&d, &u); // <- problem is here

    return 0;
 }

我在项目属性中添加了 include 和 lib 目录,一切正常,除了 D3DXVec3Normalize 行。当我运行程序时,它显示:“错误 LNK2019:未解析的外部符号 _D3DXVec3Normalize@8 在函数 _main 中引用”。

谁能解释为什么 D3DXVec3Length 和 D3DXVec3Dot 函数可以正常工作(没有 Normalize 行)而 D3DXVec3Normalize 会产生错误?

PS 我使用 DirectX SDK June 2010 和 Visual Studio 2012。

4

1 回答 1

1

链接器错误意味着基本上代码没问题,但是您没有提供函数的位置D3DXVec3Normalize,即实际函数所在的库。

MSDN建议它是 D3dx9.lib,因此您可以在代码中添加:

#pragma comment(lib, "D3dx9.lib") // this can supposedly be D3dx10.lib as well
于 2013-07-18T11:25:48.307 回答