staticメンバ変数を含むclassをDLLで外部参照させる場合

以下のクラスをDLLに宣言した場合、コンパイルは成功するがリンクに失敗することがある。(LINKERROR 201)
サンプルソース
#if !defined(TEST_EXT_CLASS)
    #ifdef TEST_EXPORTS
        #define TEST_EXT_CLASS  __declspec(dllexport)
    #else
        #define TEST_EXT_CLASS  __declspec(dllimport)
    #endif
#endif

class TEST_EXT_CLASS TEST{
public:
    TEST();
    virtual ~TEST();
    int m_nVal;
    static int s_nVal;
};
この場合、リンクエラーとなるのは

static int s_nVal;


である。
これを回避するには、このヘッダで宣言されているclassを実装した.cppファイル内で下記の様にstatic変数の宣言を行う必要がある。

int TEST::s_nVal