go调用C++ Dll

时间:2021-07-08 09:51:47   收藏:0   阅读:25

package main

import (
"C"
"fmt"
"syscall"
"unsafe"
)

//由于C++和go基本数据类型的不同,在go调用c++DLL时,只能传递指针
//c++:int ---> go:uintptr(n)
//c++:char*--->go:uintptr(unsafe.Pointer(xxxstring))

func main() {
msg := "Integrated Camera"
var usbName *C.char = C.CString(msg)
handle, err := syscall.LoadDLL("usb.dll")
if err != nil {
fmt.Println(err.Error())
return
}
getID, err := handle.FindProc("getUsbId")
if err != nil {
fmt.Println("getUsbId 不存在 err:", err.Error())
return
}
ret, _, err := getID.Call(uintptr(unsafe.Pointer(usbName)))
if err != nil {
fmt.Println("结果为:", ret)
}
var a int
a = int(ret)
fmt.Println(a)
}

原文:https://www.cnblogs.com/juju-niuniu/p/13765940.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!