From: pere.noel@... (=?ISO-8859-1?Q?Une_b=E9vue?=) Date: 2006-08-08T15:30:07+09:00 Subject: [MacOS X] writing a C ext to Ruby and dyld: NSLinkModule() error iu'ev to write a C ext to Ruby (i've allready an ObjC one) and, for that purpose i familiarise myself with C and Ruby ext. i've done the test in "How to create a Ruby extension in C in under 5 minutes" and have foolowed afterwards "The Pragmatic Programmer's Guide >> Extending Ruby" i've written *.c and *.h as it is in this page, my extconf.rb being as simple as : --- extconf.rb -------------------------------------------------------- require 'mkmf' # Give it a name #extension_name = 'cdjukebox' # The destination dir_config('cdjukebox') # Do the work create_makefile("CDJukebox") ----------------------------------------------------------------------- i get the "CDJukebox.bundle" and try it using this code : --- jukebox.rb -------------------------------------------------------- require 'Jukebox/cdjukebox' p = CDPlayer.new(1) puts "Unit is #{p.unit}" p.seek(3, 16) {|x| puts "#{x}% done" } puts "Avg. time was #{p.seekTime} seconds" ----------------------------------------------------------------------- if i print out the $LOAD_PATH i get : ["/Applications/TextMate/TextMate.app/Contents/SharedSupport/Support/lib ", "/opt/local/lib/ruby/site_ruby/1.8", "/opt/local/lib/ruby/site_ruby/1.8/powerpc-darwin8.7.0", "/opt/local/lib/ruby/site_ruby", "/opt/local/lib/ruby/vendor_ruby/1.8", "/opt/local/lib/ruby/vendor_ruby/1.8/powerpc-darwin8.7.0", "/opt/local/lib/ruby/vendor_ruby", "/opt/local/lib/ruby/1.8", "/opt/local/lib/ruby/1.8/powerpc-darwin8.7.0", "."] then the dot "." is here. here is the error i get : dyld: NSLinkModule() error dyld: Symbol not found: _CDPlayerSeek Referenced from: ./Jukebox/cdjukebox.bundle Expected in: flat namespace i think the prob come with the MakeFile and then from extconf.rb too simplistic... i've seen after googleing that some args to the compiler might be missing, then i've tried adding : -read_only_relocs suppress to the line "LDSHARED = " in MakeFile or : -framework IOKit -framework CoreFoundation -framework Carbon to the line "LIBS" in the same file and try to setup "LDFLAGS" to "-Wl,-read_only_relocs,warning" before running make. none of those get a successfull run . -- une b�vue