我有简单的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。
答案 0 :(得分:1)
链接器错误意味着基本上代码很好,但是你没有提供D3DXVec3Normalize
函数的位置,即实际函数所在的库。
MSDN suggests它是D3dx9.lib,所以你要添加到你的代码中:
#pragma comment(lib, "D3dx9.lib") // this can supposedly be D3dx10.lib as well