Hi,
I used DL to call intel fortran .dylib file successfully before, but DL is removed from latest Ruby version. I tried to use fiddle and got error message "unknown symbol 'samplesize'", could anyone help to see where I did wrong? Thanks! Liz my fortran function is below (our_int is compatible with long in C, our_double is compatible with double in C): integer(our_int) function samplesize( maxn, delta, conf, errmsg ) result( answer ) !DEC$ ATTRIBUTES DLLEXPORT :: samplesize ! ! OUTPUT ! N: sample size ! ! EXAMPLE ! samplesize4(3000, .2, .90); ! implicit none integer(our_int), intent(in) :: maxn real(our_dble), intent(in) :: delta, conf character(len=err_msg_width), intent(out) :: errmsg .... and I used DL to call it like this before: require 'dl' require 'pathname' sspath = Pathname.new( "#{RAILS_ROOT}/lib/libsamplesize.dylib" ) ss = DL.dlopen( sspath ) samplesize = ss[ "samplesize_", "iiddS" ] session[:errmsg] = " "; session[:n], args = samplesize[ session[:nmax], session[:delta], session[:conf], session[:errmsg] ] Now I tried to use fiddle as below: require 'fiddle' libm = Fiddle.dlopen( "/Library/WebServer/smart/lib/libsamplesize.dylib" ) # samplesize = ss[ "samplesize_", "iiddS" ] samplesize=Fiddle::Function.new(libm['samplesize'],[Fiddle::TYPE_LONG,Fiddle::TYPE_DOUBLE,Fiddle::TYPE_DOUBLE,Fiddle::TYPE_VOIDP],Fiddle::TYPE_LONG) session[:errmsg] = " "; # session[:n], args = samplesize[ session[:nmax], session[:sigma_sq], # session[:delta], session[:conf], session[:errmsg] ] session[:n] = samplesize.call( session[:nmax], session[:delta], session[:conf], session[:errmsg] ) but I got error: unknown symbol "samplesize" Extracted source (around line *#34*): 323334353637 libm = Fiddle.dlopen( "/Library/WebServer/smart/lib/libsamplesize.dylib" ) # samplesize = ss[ "samplesize_", "iiddS" ] samplesize=Fiddle::Function.new(libm['samplesize'],[Fiddle::TYPE_LONG,Fiddle::TYPE_DOUBLE,Fiddle::TYPE_DOUBLE,Fiddle::TYPE_VOIDP],Fiddle::TYPE_LONG) session[:errmsg] = " "; # session[:n], args = samplesize[ session[:nmax], session[:sigma_sq], # session[:delta], session[:conf], session[:errmsg] ] Rails.root: /Library/WebServer/smart Application Trace <http://calder229.hhdev.psu.edu/smart/samplesize/compute#> | Framework Trace <http://calder229.hhdev.psu.edu/smart/samplesize/compute#> | Full Trace <http://calder229.hhdev.psu.edu/smart/samplesize/compute#> app/controllers/samplesize_controller.rb:34:in `[]' app/controllers/samplesize_controller.rb:34:in `compute' -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscr...@googlegroups.com. To post to this group, send email to rubyonrails-talk@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/e23666a0-451d-4e90-a7e6-e1463748dade%40googlegroups.com. For more options, visit https://groups.google.com/d/optout.