String-Parameter

Ich versuche, swig zu verwenden, um mit c ++ zu kommunizieren, und ich habe Probleme bei der Verwendung von astd::string& Parameter. Dies ist auf Fedora 19 mit Golang 1.1-2, Swig 2.0.10-1 und GCC 4.8.1-1.

Ich kenne C ++ nicht. Ich kenne C und hatte gehofft, es zu beflügeln. Jedenfalls,_swig_wrap_pinput endet mit einem Nullzeiger.

Was übersehe ich?

Hier ist mein Testfall:

st.i

%module st
%{
#include <string>
extern void pinput(std::string& pstring);
%}
%include <std_string.i>
#include <string>
void pinput(std::string& pstring);

st.cxx

#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>

void pinput(std::string& pstring) {
  std::cout<<pstring;
}

stmain.go

package main
import (
       "st"
)

func main() {
     myLit:="This is a test."
     st.Pinput(&myLit)
}

Makefile

SWIGOBJS = st_gc.c st_wrap.cxx st.go

all: st.so st.a

$(SWIGOBJS):    st.i
    swig -go -c++ -intgosize 64 st.i

st.o:   st.cxx
    g++ -c -fpic -g -o st.o st.cxx

st_wrap.o:  st_wrap.cxx
    g++ -c -fpic -g -o st_wrap.o st_wrap.cxx

st.so:  st_wrap.o st.o
    g++ -shared st_wrap.o st.o -o st.so

st_gc.6:    st_gc.c
    /usr/lib64/golang/pkg/tool/linux_amd64/6c -I /usr/lib64/golang/pkg/linux_amd64 st_gc.c

st.6:   st.go
    /usr/lib64/golang/pkg/tool/linux_amd64/6g st.go
st.a:   st.6 st_gc.6
    go tool pack grc st.a st.6 st_gc.6

test: stmain

stmain: stmain.6
    /usr/lib64/golang/pkg/tool/linux_amd64/6l stmain.6

stmain.6: stmain.go
    /usr/lib64/golang/pkg/tool/linux_amd64/6g stmain.go

Antworten auf die Frage(1)

Ihre Antwort auf die Frage