如:dll中有个函数, char myfun(char a) a为输入输出参数,返回值为char*
请问, 调用时该怎样传参数a(a的值改变后,go程序会继续调用的),返回值该如何接收(注意:请考虑char*为二进制流) 如:r1,r2,r3 := syscall.Syscall(uintptr(myfun),1,XXX,0,0,0)
- 对r1怎样操作,可以取到返回值?
- a为输入输出参数,意思就是,myfun会取到a的值,并改变a的值,a的值改变后,go中怎样取到了?a该怎么传递了?
有疑问加站长微信联系(非本文作者)

char myfun(char a) 前面发帖掉了* Syscall后面是2个0
都是char 【】,系统屏蔽了我的【】号
都是char 【星】,系统屏蔽了我的【星】号
怎么没人
用C.int8数组或者是C.uint8数组去传参,同样也用这两种类型去接收返回值,然后一个字节一个字节取出来转换成你想要的数据类型
我直接用C.来调用c里面的函数,这样用过是可以的,你用syscall.Syscall来调用这种没试过,你可以搜一下cgo,这些应该都是cgo的吧
不考虑cgo的方式,因为是调用dll中的函数,cgo适用于调用.so类型的库
........