Не подскажете, как обеспечить единственность такой переменной (статическая в классе):
template <class T>
T* CSingleton<T>::m_pInst = NULL;
Это объявление сейчас в заголовочном файле, который используется несколькими DLL. Соответственно, в каждой DLL создаётся по одному экземепляру.