но IOCP и например epoll отличаются настолько сильно, что их почти невозможно объединить общей высокоуровневой абстракцией
int (*pointer3d)[dim2][dim3];
int (*pointer2d)[dim3];
Но вообще ожидался результат:
с точки зрения применения экранирования(!) могло бы выглядеть вот так
Самый простой вариант для MSVC - использовать микрософтовский менеджер пакетов vcpkg. У него уже есть в пакетах freeglut. Если это то что вам нужно, то рекомендую установить vcpkg с помощью него собрать glut и можете использовать.
Если этот вариант не подходит - изучайте документацию по сборке конкретно вашей версии под msvc. Вижу, что есть файл readme.win - там, скорее всего есть описание сборки под винду. Так же вижу файл glutmake.bat - видимо это запуск процесса сборки под винду.
Если используете mingw, то там обычно работают сценарии сборки для Linux:
.\configure
make
make install
Но я в этом случае использую msys2 + mingw - в msys2 входит свой менеджер пакетов pacman, устанавливаете нужную библиотеку с его помощью (аналогично как это делается в линуксе).
В любом случае в документации к библиотеке есть описание процесса сборки под поддерживаемые ОС с помощью поддерживаемых компиляторов. Если нет - то либо сборка тривиальна и нет зависимостей, либо этой библиотекой не стоит пользоваться.