>>>>> "J" == John Small <jsmall / laser.net> writes: J> rb_eval_string("print 'Object.id: ', Object.id"); // => J> Object.id: 5919960 J> printf("\nrb_cObject: %d", rb_cObject); // => J> rb_cObject: 58992127 J> printf("\ncObject: %d", rb_eval_string("Object")); // => J> Object: 11839920 J> What am I misunderstanding? Perhaps you don't want to know (it will be useless) :-))) I don't have the same result than you, for the 2nd and 3rd it give me the same result. If you really want to know the difference between 1st and 3rd (but why ???) see that 5919960 * 2 == 11839920 and look at FIX2LONG And if you really want to have another result (but why ???) try this printf("\ncObject: %ld", rb_eval_string("Object.id")); Guy Decoux