首页 > 编程语言 > 详细

go调用C++ Dll

时间:2021-07-08 09:51:47      阅读:25      评论:0      收藏:0      [点我收藏+]

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)
}

go调用C++ Dll

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!