Golang 中国

想通过golang编译成动态库so给c语言调用
遇到下面这种情况:
OPENVPN_EXPORT openvpn_plugin_handle_t
openvpn_plugin_open_v2 (unsigned int type_mask, const char argv[],
const char envp[],
struct openvpn_plugin_string_list *
return_list)
如何二维指针让C语言和golang相互调用?

2 回复
cjh6393
#1 cjh6393 • 2018-01-12 17:40

golang论坛太冷清了

xjjrocker
#2 xjjrocker • 2018-01-18 10:56

你这个问题是c和go的类型对应关系问题,你一个小片段,任谁也说不了答案呢;至于解决方式,那就更不知道怎么回复啊,不明确的问题,太宽泛。
以下供参考:go和c之间的类型转换

char -->  C.char -->  byte
signed char -->  C.schar -->  int8
unsigned char -->  C.uchar -->  uint8
short int -->  C.short -->  int16
short unsigned int -->  C.ushort -->  uint16
int -->  C.int -->  int
unsigned int -->  C.uint -->  uint32
long int -->  C.long -->  int32 or int64
long unsigned int -->  C.ulong -->  uint32 or uint64
long long int -->  C.longlong -->  int64
long long unsigned int -->  C.ulonglong -->  uint64
float -->  C.float -->  float32
double -->  C.double -->  float64
wchar_t -->  C.wchar_t  -->  
void * -> unsafe.Pointer

另外需注意 c的char* [],在go就是[] *byte

需要 登录 后方可回复, 如果你还没有账号你可以 注册 一个帐号。