Ruby 용 C++ 확장을 작성하고 Ruby 배열 객체에서 Ruby 문자열 객체를 추출하고이를 C/C++ 문자열 객체.Ruby 배열에서 가져온 문자열을 C/C++ 문자열로 변환하는 방법
#include <iostream>
#include <ruby.h>
VALUE bar_func(VALUE self, VALUE ary){
std::string s = StringValuePtr(rb_ary_entry(ary, 0));
...
return 0;
}
extern "C" VALUE rb_cFoo;
VALUE rb_cFoo;
extern "C" void Init_foo(){
rb_cFoo = rb_define_class("Foo", rb_cObject);
rb_define_singleton_method(rb_cFoo, "bar", RUBY_METHOD_FUNC(bar_func), 1);
}
및 test.rb :
require "foo"
Foo.bar(["Hello World!"])
내가 foo.cpp
를 컴파일하려고하면 컴파일러는 "같은 것을 말하는 오류를 반환
나는 foo.cpp에이 단일 용어 & 피연산자가 왼쪽 값 " (정확한 메시지가 아님)이 필요합니다. 오류가 발생했습니다. 다른 자연 lauguage에서 주어진 ssage). 내 사용량이 StringValuePtr
에 관한 것입니다. 내가 뭘 잘못하고 어떻게 고칠 수 있니?
참조 연산자'&'는 * 왼쪽 값 *을 사용해야합니다. 즉 상수에 적용 할 수 없습니다. – kirilloid
@kirilloid 코드를 수정하는 방법이 있습니까? – sawa