libupnpp defines useful objects over libupnp and can be used to create both devices and control points. It is shared by upmpdcli and upplay.
There is not much documentation at this point, but the include files are somewhat commented, and there are a bunch of small sample programs (both for the control and device side) in the libupnpp-samples github repository.
Also upmpdcli and upplay are quite complete examples…
More information: http://www.lesbonscomptes.com/upmpdcli