From: Yuri Albuquerque Date: 2009-12-16T06:32:18+09:00 Subject: bug on Ruby extension I'm trying to make a glue code for ODE 0.9 on Ruby 1.8.7. This is my code: #include "ruby.h" #include "ode/ode.h" VALUE ode_init(VALUE self) { dWorldID mWorldID = dWorldCreate(); rb_iv_set(self, "@world", (VALUE)mWorldID); return self; } VALUE ode_destroy(VALUE self) { mWorldID = (dWorldID)rb_iv_get(self, "@world") dWorldDestroy(mWorldID); rb_iv_set(self, "@world", Qnil); return Qnil } VALUE cOde; void Init_Cegui() { cCegui = rb_define_class("Ode", rb_cObject); rb_define_method(cOde, "initialize", ode_init, 0); rb_define_method(cOde, "destroy", ode_destroy, 0); } This is my extconf.rb: require 'mkmf' dir_config("ODE", "/media/disk/yuri/ode-0.9") have_library("ode") create_makefile('example') This is my output: cc -I. -I. -I/usr/lib/ruby/1.8/i486-linux -I. -I/media/disk/yuri/ode-0.9/include -D_FILE_OFFSET_BITS=64 -fPIC -fno-strict-aliasing -g -g -O2 -fPIC -c example.c In file included from /media/disk/yuri/ode-0.9/include/ode/ode.h:28, from example.c:2: /media/disk/yuri/ode-0.9/include/ode/config.h:192:1: warning: "PACKAGE_BUGREPORT" redefined In file included from /usr/lib/ruby/1.8/i486-linux/ruby.h:24, from example.c:1: /usr/lib/ruby/1.8/i486-linux/config.h:5:1: warning: this is the location of the previous definition In file included from /media/disk/yuri/ode-0.9/include/ode/ode.h:28, from example.c:2: /media/disk/yuri/ode-0.9/include/ode/config.h:195:1: warning: "PACKAGE_NAME" redefined In file included from /usr/lib/ruby/1.8/i486-linux/ruby.h:24, from example.c:1: /usr/lib/ruby/1.8/i486-linux/config.h:1:1: warning: this is the location of the previous definition In file included from /media/disk/yuri/ode-0.9/include/ode/ode.h:28, from example.c:2: /media/disk/yuri/ode-0.9/include/ode/config.h:198:1: warning: "PACKAGE_STRING" redefined In file included from /usr/lib/ruby/1.8/i486-linux/ruby.h:24, from example.c:1: /usr/lib/ruby/1.8/i486-linux/config.h:4:1: warning: this is the location of the previous definition In file included from /media/disk/yuri/ode-0.9/include/ode/ode.h:28, from example.c:2: /media/disk/yuri/ode-0.9/include/ode/config.h:201:1: warning: "PACKAGE_TARNAME" redefined In file included from /usr/lib/ruby/1.8/i486-linux/ruby.h:24, from example.c:1: /usr/lib/ruby/1.8/i486-linux/config.h:2:1: warning: this is the location of the previous definition In file included from /media/disk/yuri/ode-0.9/include/ode/ode.h:28, from example.c:2: /media/disk/yuri/ode-0.9/include/ode/config.h:204:1: warning: "PACKAGE_VERSION" redefined In file included from /usr/lib/ruby/1.8/i486-linux/ruby.h:24, from example.c:1: /usr/lib/ruby/1.8/i486-linux/config.h:3:1: warning: this is the location of the previous definition example.c: In function ‘ode_destroy’: example.c:13: error: ‘mWorldID’ undeclared (first use in this function) example.c:13: error: (Each undeclared identifier is reported only once example.c:13: error: for each function it appears in.) example.c:14: error: expected ‘;’ before ‘dWorldDestroy’ example.c:17: error: expected ‘;’ before ‘}’ token example.c: In function ‘Init_Cegui’: example.c:23: error: ‘cCegui’ undeclared (first use in this function) make: ** [example.o] Erro 1 I think it's a conflict between ode/config.h and config.h, but I have no idea how to solve. My Ruby version is ruby 1.8.7 (2008-08-11 patchlevel 72) [i486-linux] and I'm on Ubuntu 9.04. -- Posted via http://www.ruby-forum.com/.