分享
急求问 Cgo 关于 undefined (type *TEST_ST has no field or method test1)是什么原因????
JGbooks · · 2220 次点击 · 开始浏览 置顶这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。
**环境:**
```
gcc 版本:gcc version 5.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
mingw :64位 5.1.1
go版本:go version go1.10.3 windows/amd64
编译环境:LiteIDE、goland均可
```
测试程序如下:
**test.h**
```
#ifndef _TEST_H_
#define _TEST_H_
#include <stdio.h>
#include <stdlib.h>
struct test1 {
int id;
char *name;
};
struct test2 {
int age;
int high;
};
typedef struct {
struct test1 num1;
struct test2 num2;
}test_st;
#endif
```
**test.c**
```
#include "test.h"
void init (test_st *p){
test_st test;
p->num1.id = 0;
p->num1.name = "hi";
p->num2.age = 90;
p->num2.high = 195;
}
```
**test.go**
```
package main
/*
#include "test.h"
void test_printf(struct test1 *p)
{
printf("%d %\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.test1) //这里会发生错误,这是怎么回事,是wingw问题吗?
}
func main() {
h := NewTest_ST()
h.Pri()
}
```
**错误输出:**
`.\test.go:20: h.test1 undefined (type *TEST_ST has no field or method test1)`
`错误: 进程退出代码 2.`
**现阶段状况**
```
1、windows 32位可以通过,环境同上,位数为32位
2、Windows 64位 一直如上错误输出,请问是什么原因??
```
有疑问加站长微信联系(非本文作者)
入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889
关注微信2220 次点击
添加一条新回复
(您需要 后才能回复 没有账号 ?)
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码` - 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传