I am on Snow Leopard, installed 1.9.2 using rvm. Here is the runtime error I get from ncurses-0.9.1: dyld: lazy symbol binding failed: Symbol not found: _STR2CSTR Referenced from: /Users/rahul/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/x86_64-darwin10/ncurses.bundle Expected in: flat namespace dyld: Symbol not found: _STR2CSTR Referenced from: /Users/rahul/.rvm/rubies/ruby-1.9.2-head/lib/ruby/site_ruby/1.9.1/x86_64-darwin10/ncurses.bundle Expected in: flat namespace Trace/BPT trap Someone told me that STR2CSTR has been removed. Could someone tell me what I should replace STR2CSTR with in the ncurses code, or what to do. I am not familiar with the Ruby-C interface, and would appreciate some pointers. thanks, rahul p.s. I am using an older version of ncurses, since i can't get 1.2.4 to compile or run on Snow Leopard.
on 2010-08-21 08:17
on 2010-08-21 08:35
---- On Sat, 21 Aug 2010 08:17:32 +0200 R.. Kumar 1.9.1 OSX wrote ---- >Someone told me that STR2CSTR has been removed. Could someone tell me >what I should replace STR2CSTR with in the ncurses code, or what to do. >I am not familiar with the Ruby-C interface, and would appreciate some >pointers. Actually STR2CSTR was marked as obsolete in 1.8 and removed in 1.9.1. ruby.h: /* obsolete API - use StringValue() */ char *rb_str2cstr _((VALUE,long*)); /* obsolete API - use StringValuePtr() */ #define STR2CSTR(x) rb_str2cstr((VALUE)(x),0) Basically just replace STR2CSTR by StringValuePtr or define this macro. Wbr Christoph
on 2010-08-21 11:46
Christoph Kappel wrote: > ---- On Sat, 21 Aug 2010 08:17:32 +0200 R.. Kumar 1.9.1 OSX wrote ---- >>Someone told me that STR2CSTR has been removed. Could someone tell me >>what I should replace STR2CSTR with in the ncurses code, or what to do. >>I am not familiar with the Ruby-C interface, and would appreciate some >>pointers. > > Actually STR2CSTR was marked as obsolete in 1.8 and removed in 1.9.1. > > ruby.h: > > /* obsolete API - use StringValue() */ > char *rb_str2cstr _((VALUE,long*)); > /* obsolete API - use StringValuePtr() */ > #define STR2CSTR(x) rb_str2cstr((VALUE)(x),0) > > Basically just replace STR2CSTR by StringValuePtr or define this macro. > > Wbr > > Christoph I've tried various combinations. I either get runtime errors relating to rb_str2ctr or just make errors. 1. $ perl -p -i.b -e 's/STR2CSTR/StringValuePtr/g' *.c $ make form_wrap.c: In function ‘rbncurs_c_set_field_type’: form_wrap.c:626: error: lvalue required as unary ‘&’ operand form_wrap.c: In function ‘rbncurs_c_set_field_fore’: form_wrap.c:698: warning: implicit conversion shortens 64-bit value into a 32-bit value form_wrap.c: In function ‘rbncurs_c_set_field_back’: form_wrap.c:712: warning: implicit conversion shortens 64-bit value into a 32-bit value form_wrap.c: In function ‘make_arg’: form_wrap.c:1134: warning: format not a string literal and no format arguments make: *** [form_wrap.o] Error 1
on 2010-08-21 12:10
Christoph Kappel wrote: > ---- On Sat, 21 Aug 2010 08:17:32 +0200 R.. Kumar 1.9.1 OSX wrote ---- >>Someone told me that STR2CSTR has been removed. Could someone tell me >>what I should replace STR2CSTR with in the ncurses code, or what to do. >>I am not familiar with the Ruby-C interface, and would appreciate some >>pointers. > > Actually STR2CSTR was marked as obsolete in 1.8 and removed in 1.9.1. > > ruby.h: > > /* obsolete API - use StringValue() */ > char *rb_str2cstr _((VALUE,long*)); > /* obsolete API - use StringValuePtr() */ > #define STR2CSTR(x) rb_str2cstr((VALUE)(x),0) > > Basically just replace STR2CSTR by StringValuePtr or define this macro. > > Wbr > > Christoph On a fresh copy I placed the above lines, in the ncurse_wrap.h file. "make" worked, I created a gem and installed the gem. (I placed the lines above #include <ruby.h> else i get compilation errors.) Upon execution of any sample I get: dyld: lazy symbol binding failed: Symbol not found: _rb_str2cstr Perhaps, I am placing these lines in the wrong place. I tried placing in the .c file but i get the same run time error.
on 2010-08-21 13:39
On Sat, Aug 21, 2010 at 7:10 PM, R.. Kumar 1.9.1 OSX <sentinel1879@gmail.com> wrote: > Christoph Kappel wrote: >> ---- On Sat, 21 Aug 2010 08:17:32 +0200 R.. Kumar 1.9.1 OSX Â wrote ---- >>>Someone told me that STR2CSTR has been removed. Could someone tell me >>>what I should replace STR2CSTR with in the ncurses code, or what to do. >>>I am not familiar with the Ruby-C interface, and would appreciate some >>>pointers. http://github.com/seanohalpin/ffi-ncurses
on 2010-08-21 16:37
Michael Fellinger wrote: > On Sat, Aug 21, 2010 at 7:10 PM, R.. Kumar 1.9.1 OSX > <sentinel1879@gmail.com> wrote: >> Christoph Kappel wrote: >>> ---- On Sat, 21 Aug 2010 08:17:32 +0200 R.. Kumar 1.9.1 OSX Â wrote ---- >>>>Someone told me that STR2CSTR has been removed. Could someone tell me >>>>what I should replace STR2CSTR with in the ncurses code, or what to do. >>>>I am not familiar with the Ruby-C interface, and would appreciate some >>>>pointers. > > http://github.com/seanohalpin/ffi-ncurses Is anything other than ncurses port required to be installed ? I get: $ ruby example.rb .rvm/gems/ruby-1.9.2-head/gems/ffi-0.6.3/lib/ffi/library.rb:61:in `block in ffi_lib': Could not open library 'libncurses.so.5': dlopen(libncurses.so.5, 5): image not found. Could not open library 'libncurses.so.5.dylib': dlopen(libncurses.so.5.dylib, 5): image not found (LoadError) $ mdfind -name 'libncurses.' /Developer/SDKs/MacOSX10.6.sdk/usr/lib/libncurses.5.4.dylib /usr/lib/libncurses.5.4.dylib /usr/lib/libncurses.5.dylib /opt/local/lib/libncurses.5.dylib /opt/local/lib/libncurses.a $ port installed | grep ncurse ncurses @5.7_0+darwin_10 (active) ncursesw @5.7_0+darwin_10 (active)
on 2010-08-21 19:37
On Sat, Aug 21, 2010 at 11:37 PM, R.. Kumar 1.9.1 OSX <sentinel1879@gmail.com> wrote: >> http://github.com/seanohalpin/ffi-ncurses > > Is anything other than ncurses port required to be installed ? Seems like it's a bit outdated, I fixed that for you: http://github.com/manveru/ffi-ncurses Not sure if that works on OSX, but I'm hopeful :)
on 2010-08-21 23:44
R.. Kumar 1.9.1 OSX wrote: > I've tried various combinations. I either get runtime errors relating to > rb_str2ctr or just make errors. > > 1. $ perl -p -i.b -e 's/STR2CSTR/StringValuePtr/g' *.c > $ make > > form_wrap.c: In function ‘rbncurs_c_set_field_type’: > form_wrap.c:626: error: lvalue required as unary ‘&’ operand > form_wrap.c: In function ‘rbncurs_c_set_field_fore’: > form_wrap.c:698: warning: implicit conversion shortens 64-bit value into > a 32-bit value > form_wrap.c: In function ‘rbncurs_c_set_field_back’: > form_wrap.c:712: warning: implicit conversion shortens 64-bit value into > a 32-bit value > form_wrap.c: In function ‘make_arg’: > form_wrap.c:1134: warning: format not a string literal and no format > arguments > make: *** [form_wrap.o] Error 1 Unfortunately replacing STR2CSTR with StringValuePtr is not enough as outlined in http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/.... You have to make two additional changes: $ diff form_wrap.c form_wrap.c.b 626,627c626 < VALUE tmp = rb_ary_entry(arg3, (long)i); < list[i] = StringValuePtr(tmp); --- > list[i] = STR2CSTR(rb_ary_entry(arg3, (long)i)); ... and $ diff ncurses_wrap.c ncurses_wrap.c.b ... 2244,2245d2243 < VALUE tmp = rb_funcall3(rb_mKernel, rb_intern("sprintf"), argc-1, < argv + 1); 2247c2245,2246 < (VALUE)StringValuePtr(tmp)); --- > STR2CSTR(rb_funcall3(rb_mKernel, rb_intern("sprintf"), argc-1, > argv + 1))); ... Then run make make install within the installed ncurses gem. After these changes I was able to run the 2 testcases test1.rb and test2.rb of rbcurse-1.1.3. ruby test1.rb
on 2010-08-22 09:04
Ralf Papenkordt wrote: > > $ diff ncurses_wrap.c ncurses_wrap.c.b > ... > 2244,2245d2243 > < VALUE tmp = rb_funcall3(rb_mKernel, rb_intern("sprintf"), argc-1, > < argv + 1); > 2247c2245,2246 > < (VALUE)StringValuePtr(tmp)); > --- >> STR2CSTR(rb_funcall3(rb_mKernel, rb_intern("sprintf"), argc-1, >> argv + 1))); > ... > Thanks a lot, Ralf. Working fine :) I wish i could take over maintenance of this gem, but I know very basic C only.
Please log in before posting. Registration is free and takes only a minute.
Existing account
(Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
Log in with Google account | Log in with Yahoo account
No account? Register here.