ABC.h で
template<class T> class ABC { 宣言 };
typedef ABC<long> ABC32;
としていて、

DEF.h で ABC32 のポインタだけを使用しているので、
ABC.h をインクルードせず、前方宣言だけで、
class ABC32;
void Func1(ABC32* abc);
とした。

次に、Func1 の実装をするために DEF.cpp で
#include "DEF.h"
#include "ABC.h"
void Func1(ABC32* abc) { 実装 }

としてコンパイルしたところ、コンパイラ (VC2003) が、
ABC32 を再定義した、というエラーを吐いた。
どうしたら意図どおりのことをできるでしょうか。