go dll 传char*

 

go调用dll中方法参数为*char类型

tiger1103 2017-12-25 10:58发布 1224浏览 问与答

我有一个dll库,里面有一个C实现的方法:

int  GetPeopleName(char *strTmp, int *strLen)

现要在go里面调用这个方法,参数应该如何设置?

func GetPeopleName(){
    GetPeopleName := lib.NewProc("GetPeopleName")
    var a byte
    var b int
    ret,_,err := GetPeopleName.Call(uintptr(unsafe.Pointer(&a)),uintptr(unsafe.Pointer(&b)))
    if err != nil {
        fmt.Printf("value a is %s\n",(*string)(unsafe.Pointer(uintptr(a))))
        fmt.Printf("value b is %d\n",(*int)(unsafe.Pointer(uintptr(b))))
        fmt.Printf("GetPeopleName_执行结果%v\n",ret)
    }
}

我的代码是这样,但是打印a字符串信息:
value a is %!s(*string=0xd4)
value b is 51639
如何获取a字符串内容?


 

xjjrocker 2018-01-17 15:17

把:

    var a byte
       ...
    uintptr(unsafe.Pointer(&a))

改成:

    var a = make([]byte, 256)
       ...
    uintptr(unsafe.Pointer(&a[0]))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法网奇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值