Как вы думаете, как работают кроссплатформенные функции? Просто создайте свою собственную функцию следующим образом:
int truncate(int fd, long size)
{
#ifdef _WIN32 || _WIN64
return _chsize(fd, size);
#else
#ifdef POSIX
return ftruncate(fd, size);
#else
// code for other OSes
#endif
#endif
}