@12rbah

Как правильно инициализировать структуру c++ в go через cgo?

Пытаюсь разобраться с cgo, пытаюсь вернуть инициализированную структуру из с++ кода, но возвращается только пустой указатель, что я делаю не так?

//wrapper.cpp
struct Something
{
    int nValue;
    float fValue;
};

void* retSome(){
    Something s;
    s.fValue = 5;
    s.nValue = 2;
    return static_cast<void*>(&s);
}

// wrapper.h
#ifdef __cplusplus
extern "C" {
#endif

void print();
void print2();
void* setString(const char *name);
void* setStringUnsafe(void*);
void* retSome();
#ifdef __cplusplus
}
#endif

//cgo.go
type Something struct
{
	nValueint int
	fValue float64
}

func main() {
	ptr := C.retSome()
	var s = new(Something)
	s = (*Something)(unsafe.Pointer(ptr))

	fmt.Println(ptr,s) //nil nil 
}
  • Вопрос задан
  • 51 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы