![](/img/trans.png)
[英]Why are the values I am pulling from my ruby array to my c extension wrong?
[英]Why am I able to directly use some of the ruby C extension array methods, but not others?
我正在使用 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 有什么不同。
看看http://www.ruby-doc.org/doxygen/1.8.4/array_8c-source.html (第 2666 行)
在那里你可以看到方法 rb_ary_and 被声明为static 。 这意味着它仅在array.c内部可见。
未经测试,但我认为这会起作用:
rb_funcall( rAry1, rb_intern("&"), 1, rAry2 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.