Using gcc 3.4.6. pyode isn't compiling for me, even after using a recent pyrex. I managed to track down the problem to dJointFeedback not being declared from the ode headers. If you look at that file (I'm using ode-0.5-r4), you'll see the struct is declared in the last lines of /usr/include/ode/common.h. pyode's generated c #includes /usr/include/ode/ode.h. /usr/include/ode/ode.h. in turn includes /usr/include/ode/common.h. So it should be declared. But here's where things get wierd. $ gcc -E common.h | grep dJointFeedback typedef struct dJointFeedback { } dJointFeedback; $ gcc -E ode.h | grep dJointFeedback $ On a debian etch system the above commands give the expected results - both outputs mention dJointFeedback. Oh, and no statements after the dJointFeedback lines get included either, and the couple of statements before it come through fine, so something is breaking the parsing of the header _just before_ line 298 of common.h. But only when it's included from ode.h. It's very possible that I'm just being very stupid though. Portage 2.0.54-r2 (default-linux/x86/2005.1, gcc-3.4.6, glibc-2.2.5-r4,glibc-2.3.5-r3, 2.6.15.1 i686) ================================================================= System uname: 2.6.15.1 i686 Pentium II (Deschutes) Gentoo Base System version 1.6.14 dev-lang/python: 2.4.2 dev-python/pycrypto: 2.0-r1 dev-util/ccache: [Not Present] dev-util/confcache: [Not Present] sys-apps/sandbox: 1.2.17 sys-devel/autoconf: 2.13, 2.59-r7 sys-devel/automake: 1.4_p6, 1.5, 1.6.3, 1.7.9-r1, 1.8.5-r3, 1.9.6-r1 sys-devel/binutils: 2.16.1 sys-devel/libtool: 1.4.1-r10, 1.5.22 virtual/os-headers: 2.6.11-r2 ACCEPT_KEYWORDS="x86" AUTOCLEAN="yes" CBUILD="i686-pc-linux-gnu" CFLAGS="-march=pentium2 -O2 -pipe" CHOST="i686-pc-linux-gnu" CONFIG_PROTECT="/etc /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/lib/X11/xkb /usr/share/config" CONFIG_PROTECT_MASK="/etc/gconf /etc/terminfo /etc/env.d" CXXFLAGS="-march=pentium2 -O2 -pipe" DISTDIR="/usr/portage/distfiles" FEATURES="autoconfig distlocks sandbox sfperms strict" GENTOO_MIRRORS="http://trumpetti.atm.tut.fi/gentoo/ http://sunsite.cnlab-switch.ch/ftp/mirror/gentoo/ http://www.ibiblio.org/gentoo" LANG="en_GB" MAKEOPTS="-j3" PKGDIR="/usr/portage/packages" PORTAGE_TMPDIR="/var/tmp" PORTDIR="/usr/portage" PORTDIR_OVERLAY="/usr/local/portageoverlay" SYNC="rsync://rsync.gentoo.org/gentoo-portage" USE="x86 X aac aalib alsa apm arts audiofile avi berkdb bitmap-fonts bzip2 cairo cdr cjk cli crypt cups curl dri dts dv dvd eds emboss encode esd exif expat fam ffmpeg flac foomaticdb fortran gd gdbm gif glut gmp gpm gstreamer gtk gtk2 guile idn imagemagick imlib isdnlog jack jpeg kde kdeenablefinal lcms libcaca libg++ libwww mad matroska mikmod mmx mng motif moznocompose moznoirc moznomail mp3 mpeg ncurses nls nodrm offensive ogg oggvorbis openal opengl oss pam pcre pdf pdflib perl png pppd python qt quicktime readline recode reflection samba scanner sdl session slang speex spell spl ssl svg svga tcltk tcpd theora tiff truetype truetype-fonts type1-fonts udev unicode usb v4l v4l2 vcd vorbis wmf xine xinerama xml xml2 xmms xorg xscreensaver xv xvid zlib userland_GNU kernel_linux elibc_glibc" Unset: CTARGET, INSTALL_MASK, LC_ALL, LDFLAGS, LINGUAS, PORTAGE_RSYNC_EXTRA_OPTS, PORTAGE_RSYNC_OPTS
Hmmm. Here's the output on my system: $ gcc -E /usr/include/ode/common.h | grep dJointFeedback typedef struct dJointFeedback { } dJointFeedback; $ gcc -E /usr/include/ode/ode.h | grep dJointFeedback typedef struct dJointFeedback { } dJointFeedback; void dJointSetFeedback (dJointID, dJointFeedback *); dJointFeedback *dJointGetFeedback (dJointID);
Yes, this the result on a debian etch system. I can't figure out how a few newlines and a comment could be causing the parsing to go wrong in this specific circumstance. I'm thinking of what I could possibly have done to my system that would make this happen.
Ok, sorted it out. This was me being stupid. A long time ago I had a manually installed version of ode - the headers were still sitting in /usr/local/include. They were from a previous version where dJointFeedback hadn't been implemented.