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 に答える