int add(const int x, const int y){
int sum = x + y;
return sum;
}
gcc t.c -o add.so -fPIC -shared
t.rb
require 'fiddle/import'
module F
extend Fiddle::Importer
dlload "./add.so"
extern "int add(const int x, const int y)"
end
p F.add(1, 2)
ruby t.rb
Actual behavior
Error
/home/kojix2/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/fiddle-1.0.8/lib/fiddle/cparser.rb:245:in `parse_ctype': unknown type: const (Fiddle::DLError)
from /home/kojix2/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/fiddle-1.0.8/lib/fiddle/cparser.rb:117:in `block in parse_signature'
from /home/kojix2/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/fiddle-1.0.8/lib/fiddle/cparser.rb:117:in `collect'
from /home/kojix2/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/fiddle-1.0.8/lib/fiddle/cparser.rb:117:in `parse_signature'
from /home/kojix2/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/fiddle-1.0.8/lib/fiddle/import.rb:168:in `extern'
from t.rb:6:in `<module:F>'
from t.rb:3:in `<main>'
Expected behavior
require 'fiddle/import'
module F
extend Fiddle::Importer
dlload "./add.so"
extern "int add(int x, int y)" # If you remove const, it works as expected
end
p F.add(1, 2) #=> 3
Step to reproduce
t.c
gcc t.c -o add.so -fPIC -shared
t.rb
ruby t.rb
Actual behavior
Error
Expected behavior