Golang 中国

网上查到go调用dll的方法,但调用Com组件时,就会报错,查了很久,也只是知道Com和Dll区别的文件,没有查到如何调用Com组件的方法,有谁能指点一下吗?

1 回复
liujunjie
#1 liujunjie • 2018-01-12 14:46

//// 代码 dll为Com组件,会报错

package main // main
import (
“fmt”
“syscall”
“time”
“unsafe”
)

func main() {

defer func() { // 必须要先声明defer,否则不能捕获到panic异常
    //fmt.Println("c")
    if err := recover(); err != nil {
        fmt.Println(err) // 这里的err其实就是panic传入的内容,55
        defer time.Sleep(15 * time.Second)
    }
    //fmt.Println("d")
}()
var aint_appcode *int //uintptr
var astr_appmsg string
var mod = syscall.NewLazyDLL("yh_interface.dll") //yh_interface.dll    yh_interfaceproxy.dll
var proc = mod.NewProc("DllGetClassObject")

ret, _, _ := proc.Call(uintptr(unsafe.Pointer(aint_appcode)),
    uintptr(unsafe.Pointer(syscall.StringToUTF16Ptr(astr_appmsg))))
fmt.Printf("Return: %d\n", ret)

}

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