Package: libxcb-shape0-dev Version: 1.1-1.1 The header file xcb/shape.h can't be used in C++ directly because it is missing the
#ifdef __cplusplus extern "C" { #endif #ifdef __cplusplus } // extern "C" #endif wrappers. This causes linker errors, because to C and C++ the declarations in the headers declare different symbols. Note that this doesn't only affect the shape header, others are affected, too. I used for i in /usr/include/xcb/*; do grep 'extern "C"' $i >/dev/null || echo $i done to find header files without the wrapper and it reported a few more from other XCB libraries: /usr/include/xcb/bigreq.h /usr/include/xcb/render.h /usr/include/xcb/shape.h /usr/include/xcb/shm.h /usr/include/xcb/xc_misc.h /usr/include/xcb/xcb_atom.h /usr/include/xcb/xcb_renderutil.h /usr/include/xcb/xcbxlib.h /usr/include/xcb/xproto.h Note: xproto.h might be a false positive, because it is included by xcb.h inside its extern "C" wrapper. Further, you can't use it on its own anyway due to its circular dependency on xcb.h. xproto.h defines its include-guard macros and then includes xcb.h, which in turn includes xproto.h a second time. However, the include guards make that a no-op so lateron when using parts of xproto.h it fails. I don't think that file should be included on its own but only by xcb.h, so it should generate a suitable error and the #inlude "xcb.h" should be removed from it. Workaround: extern "C" { #include <xcb/shape.h> } Uli -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]