DirectX D3DXVec3Normalize未解析的外部符号

时间:2013-07-18 10:02:57

标签: c++ directx

我有简单的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:函数_main中引用的未解析的外部符号_D3DXVec3Normalize @ 8”。

有人可以解释为什么D3DXVec3Length和D3DXVec3Dot功能正常工作(没有Normalize线)而D3DXVec3Normalize会产生错误吗?

P.S。我使用2010年6月的DirectX SDK和Visual Studio 2012。

1 个答案:

答案 0 :(得分:1)

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

MSDN suggests它是D3dx9.lib,所以你要添加到你的代码中:

#pragma comment(lib, "D3dx9.lib") // this can supposedly be D3dx10.lib as well