急求问 Cgo 关于 undefined (type *TEST_ST has no field or method test1)是什么原因????

JGbooks · · 1633 次点击
` 修改程序:C.test_printf(&h.t.num1) //这里会发生错误,这是怎么回事,是wingw问题吗?` `修改程序:打印出修改 printf("%d %s\r\n", p->id, p->name);` 然而测试通过,但是还是遇到 `.\engine.go:395: h.m.linfo undefined (type _Ctype_struct___0 has no field or method linfo)` 虽然程序不一样,但是设计方法一样。windows32位 linux64位均可以,就是windows 64 不行???
#1
更多评论
修改了下 ```go package main /* #include "test.h" void test_printf(struct test1 *p) { printf("%d %s\r\n", p->id, p->name); } */ import "C" type TEST_ST struct { t C.test_st } func NewTest_ST() *TEST_ST { return &TEST_ST{} } func (h *TEST_ST) Pri() { C.test_printf(&h.t.num1) } func main() { h := NewTest_ST() h.Pri() } ```
#2
`关于:.\engine.go:395: h.m.linfo undefined (type _Ctype_struct___0 has no field or method linfo)问题!!!` ``` `1、产生原因是go 不能识别 C语言结构体中及结构体成员` 1.1 可能是由于编译器的原因,本人测试windows32 linux64 均可以,go版本都是1.10.3, 1.2 也可能是Mingw的原因感觉这个影响不大,因为上述程序可以测过。 2、最终只能重新修改程序,完美通过 2.1 建议对于go程序中需要调用C结构体的结构体成员(相当于num1)时,最好在声明go结构体时,进行显示声明。不推荐使用C语言封装一个大结构体。 ```
#3