Alright there is a lot of information above I am working on understanding, thank you all for your help so far.
So to not export the entire class I need to add "EXPORT" in front of everything I want to export in the header files. However I shouldn't add EXPORT to functions that are Inline? In addition I should change all my functions that take std::string as a parameter to char, and then keep the std::string's internal or get rid of them all together.
To the other issue with static data members, I moved the Singleton<T>::instance to the c++ file, now I get Linker errors for each class which is a singleton, which then causes more issues.
I am not sure how to solve this:
My Singleton c++ just to make sure I did make any errors.
#include "Singleton.h" using namespace ParticlesEngine; template <typename T> T* Singleton<T>::instance = 0;