Пытаюсь разобраться с 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
}