Added DLL_PUBLIC defines and visibility=hidden flag to linux build to bring it in line with VC defaults