From OpenHome
ohNet is a full UPnP stack. Ports exist for Linux and Windows (Mac is in progress). The public APIs are protocol independent and offered in C++, C#, C and JavaScript (Control Point only).
UPnP services are presented as classes with actions appearing as functions and state variables appearing as member variables. These classes are referred to as proxies for users of the Control Point stack and Devices for users of the Device stack.
Proxies and Providers are included for all OpenHome and UPnP AV services. ohNet includes a tool (ohNetGen) to generate proxies and/or providers in any of the supported languages.