During compilation of Partio sources in Visual Studio 2015 there were errors generated in the following files in relation to min and max not found:
Adding #include <algorithm> to each of these files helped solve the errors, however there are some linker errors in relation to readPRT / writePRT methods afterwards:
ParticleIO.obj : error LNK2019: unresolved external symbol "class Partio::ParticlesDataMutable * __cdecl Partio::readPRT(char const *,bool,class std::basic_ostream<char,struct std::char_traits<char> > *)" (?readPRT@Partio@@YAPEAVParticlesDataMutable@1@PEBD_NPEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z) referenced in function "class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class Partio::ParticlesDataMutable * (__cdecl*)(char const *,bool,class std::basic_ostream<char,struct std::char_traits<char> > *),struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,class Partio::ParticlesDataMutable * (__cdecl*)(char const *,bool,class std::basic_ostream<char,struct std::char_traits<char> > *)> > > & __cdecl Partio::readers(void)" (?readers@Partio@@YAAEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P6APEAVParticlesDataMutable@Partio@@PEBD_NPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@@ZU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P6APEAVParticlesDataMutable@Partio@@PEBD_NPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@@Z@std@@@2@@std@@XZ)
1>ParticleIO.obj : error LNK2019: unresolved external symbol "bool __cdecl Partio::writePRT(char const *,class Partio::ParticlesData const &,bool,class std::basic_ostream<char,struct std::char_traits<char> > *)" (?writePRT@Partio@@YA_NPEBDAEBVParticlesData@1@_NPEAV?$basic_ostream@DU?$char_traits@D@std@@@std@@@Z) referenced in function "class std::map<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,bool (__cdecl*)(char const *,class Partio::ParticlesData const &,bool,class std::basic_ostream<char,struct std::char_traits<char> > *),struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > >,class std::allocator<struct std::pair<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const ,bool (__cdecl*)(char const *,class Partio::ParticlesData const &,bool,class std::basic_ostream<char,struct std::char_traits<char> > *)> > > & __cdecl Partio::writers(void)" (?writers@Partio@@YAAEAV?$map@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P6A_NPEBDAEBVParticlesData@Partio@@_NPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@@ZU?$less@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@V?$allocator@U?$pair@$$CBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@P6A_NPEBDAEBVParticlesData@Partio@@_NPEAV?$basic_ostream@DU?$char_traits@D@std@@@2@@Z@std@@@2@@std@@XZ)
In PRT.cpp the definition for read/writePRT and since PARTIO_WIN32 preprocessor is used, there should not have been an issue as their implementation is there. What is strange however is that if you go to line 69 and 98 in ParticleIO.cpp, when you ask VS to go to definition of readPRT and writePRT it incorrectly points to lines 149 and 347 of PRT.cpp which reside in the wrong block of code. That is the block of code when the preprocessor PARTIO_WIN32 is not used. VS should have pointed to lines 440 and 447 right?