我正在使用ruby代码库的array.c中的许多数组方法,但在尝试调用时
VALUE rIntersection = rb_ary_and(rAry1, rAry2);
我收到了这个错误:
dyld: lazy symbol binding failed: Symbol not found: _rb_ary_and
Referenced from: ./ext/ev/counters.bundle
Expected in: flat namespace
在我的代码的其他方面,我使用rb_ary_sort_bang,rb_ary_clear,rb_ary_reverse等等。所以我不确定为什么rb_ary_and有任何不同。
答案 0 :(得分:2)
查看http://www.ruby-doc.org/doxygen/1.8.4/array_8c-source.html(第2666行)
在那里你可以看到方法rb_ary_and被声明为 static 。这意味着它只能在 array.c 中看到。
答案 1 :(得分:1)
未经测试,但我认为这样可行:
rb_funcall( rAry1, rb_intern("&"), 1, rAry2 )