I declare a singleton on a MFC extension DLL, like this:
//header file: SingleTon.h class AFX_EXT_CLASS CMySingleton { public: static CMySingleton* Instance() { if(!singleton) singleton = new CMySingleton(); return singleton; } int a; // Other non-static member functions private: CMySingleton() {}; // Private constructor CMySingleton(const CMySingleton&); // Prevent copy-construction CMySingleton& operator=(const CMySingleton&); // Prevent assignment virtual ~CMySingleton() {}; static CMySingleton* singleton; }; And in a cpp file I code the following line: CMySingleton* CMySingleton::singleton = NULL; Code 2:
CMySingleton *a; a = CMySingleton::Instance();
The problem is when I code "code 2" in a Regular Dll, all works fine, but when I code "code 2" in another MFC extension DLL gives an error:
unresolved external symbol "private: static class CMySingleton* CMySingleton::singleton" (?singleton@CMySingleton@@0PAV1@A)
I check correctly all the dependencies, via Project Dependencies.
Any idea?