Bindgen is really awesome, makes is dead-simple to integrate with existing libraries.
That said the only place where there's a little friction is around macros since they need to be evaluated in context. However it's easy to use another header to declare them as static const/discrete function and then bindgen picks them up just fine.
The C++ support is impressive. It doesn't work well enough to handle "idiomatic" C++ libraries, with templates all over the place, but that it works as well as it does is really impressive.
That said the only place where there's a little friction is around macros since they need to be evaluated in context. However it's easy to use another header to declare them as static const/discrete function and then bindgen picks them up just fine.