MinGW32 には D3DX ないんだね(´・ω・`)

D3DMATRIX の中身を見ようかと思って D3DXMatrixIdentity 使おうとしたわけ。

#include <stdio.h>
#include <d3d9.h>

void printMatrix(const D3DMATRIX& m);

int main()
{
    D3DMATRIX  mat;
    D3DXMatrixIdentity( &mat );
    printMatrix( mat );
}

void printMatrix(const D3DMATRIX& m)
{
    printf( "[\n" );
    printf( " [%f, %f, %f, %f]\n", m._11, m._12, m._13, m._14 );
    printf( " [%f, %f, %f, %f]\n", m._21, m._22, m._23, m._24 );
    printf( " [%f, %f, %f, %f]\n", m._31, m._32, m._33, m._34 );
    printf( " [%f, %f, %f, %f]\n", m._41, m._42, m._43, m._44 );
    printf( "]\n" );
}

そしたらさ:

g++ -O2 -Wall -W -march=pentium4 -s -c testD3Matrix.cpp -o Debug/testD3Matrix.o
testD3Matrix.cpp: In function 'int main()':
testD3Matrix.cpp:11: error: 'D3DXMatrixIdentity' was not declared in this scope
make: *** [Debug/testD3Matrix.o] Error 1

うすうすどころか予想もしてなかったんだけどさ、リファレンス[msdn.microsoft.com] みたらさ、
D3DMATRIXD3D にあって、それのクラス版の D3DXMATRIX とか D3DXMatrixIdentityD3DX の中に入ってるんだよね(´・ω・`)ショボーン

でも、D3DXMatrixIdentity が入ってると思われる d3dx9.lib は同名の d3dx.dll を呼びだす糊みたいなものなわけだ。
dll があれば怖くないよね。

MinGW FAQ @ MSVC のプログラムから MinGW DLL を呼び出すことや、その逆は可能ですか?[www.sixnine.net]

を見ると:

  1. pexports $(target_dir)/$(target_name).dll | sed "s/^_//" > $(target_name).def
  2. dlltool -U -d $(target_name).def -l $(target_name).a
  3. キタ━━━━━━(゚∀゚)━━━━━━ !!!!!

で、できるらしい。
んじゃ、早速やってみる。
またな!(やっくん的な意味で)