문제

C 라이브러리 내에서 Perl Hash를 만들려고합니다. 지금까지 내가 얻은 것은 다음과 같습니다.

static void add_string_to_perl_hash ( HV *hv, char * key, char *value ) {

SV *obj = sv_2mortal(newSVpv(value, 0));

hv_store(hv, (const char *)key, strlen (key), obj, 0);

SvREFCNT_inc(obj);

}

SV * do_get_test_hash () {

    static char *foo ="foo";
    static char *bar ="bar";

    HV *hv;

    hv = newHV();
    add_string_to_perl_hash ( hv, "foo",   foo);
    add_string_to_perl_hash ( hv, "bar",   bar);

    return sv_2mortal(newRV_noinc((SV*)hv));
}

시도해보십시오 : 나는 나에게 의미가있는 어떤 것도 얻지 못한다 :

use testlib;
use Data::Dumper;

print Dumper (testlib::do_get_test_hash());

$VAR1 = bless( do{\(my $o = 5359872)}, '_p_SV' );

아이디어?

도움이 되었습니까?

해결책

예제 6을 살펴보십시오 perlxstut. 그것은 많은 해시를 생성하고 배열에 추가합니다. 결국, 그것은 배열에 대한 참조를 반환합니다. 해시를 반환하면 실제로 동일하게 작동합니다.

다른 팁

나는 당신이 스택에 반환하려는 값을 푸시해야한다고 생각합니다. 함수에서 반환하지 말고 Swig가 아닌 XS에 익숙합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top