pupnp is based on the libupnp source code, and age shows ... Using it in an application is, in my opinion, painful. It doesn't seem like a big thing when you just check things out, but when you have a complex application, the pain is real.
A note about Platinum is that it is a GPL unlike most linux libraries. This, and the fact that it is not even available on major Linux distributions, meant that I had never tried it, so I cannot examine it in more detail.
My own choice would be GUPnP (although you could easily call me biased): it is written in C using Glib and a license under LGPL. Mobile and network style devices created using GUPnP are now used in the real world. Both UPnP and DLNA have certified devices and services implemented using GUPnP. The library has some dependencies (libsoup, libxml2), but I believe that they are for valid reasons. The API, as a rule, simplifies the task for the user without sacrificing performance, and that something more upnp packages cannot require.
source share