Libvirt supports C and C++ directly, and has bindings available for other languages:
C#: Arnaud Champion develops C# bindings.
Go: Daniel Berrange develops Go bindings.
Java: Daniel Veillard develops Java bindings.
OCaml: Richard Jones develops OCaml bindings.
Perl: Daniel Berrange develops Perl bindings.
PHP: Radek Hladik started developing PHP bindings in 2010.
In February 2011 the binding development has been moved to the libvirt.org website as libvirt-php project.
The project is now maintained by Michal Novotny and it's heavily based on Radek's version. For more information, including information on posting patches to libvirt-php, please refer to the PHP bindings site.
Python: Libvirt's python bindings are split to a separate package since version 1.2.0, older versions came with direct support for the Python language.
If your libvirt is installed as packages, rather than compiled by you from source code, ensure you have the appropriate package installed.
This is named libvirt-python on RHEL/Fedora, python-libvirt on Ubuntu, and may be named differently on others.
For usage information, see the Python API bindings page.
Ruby: Chris Lalancette develops Ruby bindings.
Integration API modules:
D-Bus: Pavel Hrdina develops D-Bus API.
For information on using libvirt on Windows please see the Windows support page.
Support, requests or help for libvirt bindings are welcome on the devel mailing list, as usual try to provide enough background information and make sure you use recent version, see the help page.