Services are also often headless daemons, that is, they have no user visible ui, and are meant to be running all the time. While I used to write very highly portable code for telephony services, I have been writing services (often in C++) only for posix and embedded targets for at least a decade now.
It's hard for me to find a use case for running windows as a services platform. But I was never closed to the idea of running telephony services on windows if a plausible use case can be suggested. For my own code, in most cases, it would be changing my main.cpp to conditionally compile as a windows system service rather than just managed thru posix signal handlers. Other changes are probably much smaller.
My current telephony applications build with the eXosip library. This does build and runs on windows, and I vendor it in my packages so it can build locally without trying to get it to externally build in something like vcpkg, so it's easy to carry and build that too. Actually, I also use eXosip for client telephony applications for this reason, too, but those I tend to build with Qt, which already is fully portable.