千家信息网

GOlang中怎么调用 DLL 类库

发表于:2025-02-05 作者:千家信息网编辑
千家信息网最后更新 2025年02月05日,GOlang中怎么调用 DLL 类库,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。DLL 原型GetDllVersion函数原型:u
千家信息网最后更新 2025年02月05日GOlang中怎么调用 DLL 类库

GOlang中怎么调用 DLL 类库,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

DLL 原型
GetDllVersion函数原型:unsigned int GetDllVersion(void);获取dll版本信息返回值:DLL版本信息((unsigned int),高字节为主版本信息,低字节为子版本信息=====================================================================SetQianNiuPath函数原型:int SetQianNiuPath(const char * Path, unsigned int PathLen);设置千牛安装路径(DLL不保存路径)参数:  Path,千牛安装路径(最长不要超过255个字符)  PathLen,安装你路径长度返回值:0 成功    -1 路径存在问题    -2 路径文件夹不存在=====================================================================
GO调用DLL
package mainimport (        "fmt"        "syscall"        "unsafe")var (        multiQianniuLogin = syscall.NewLazyDLL("MultiQianniuLoginDll.dll")        getDllVersion     = multiQianniuLogin.NewProc("GetDllVersion"))// 获取字符串的长度指针func lenPtr(s string) uintptr {        return uintptr(len(s))}// 获取数字的指针func intPtr(n int) uintptr {        return uintptr(n)}// 获取字符串的指针func strPtr(s string) uintptr {        return uintptr(unsafe.Pointer(syscall.StringBytePtr(s)))}func main() {        var ret uintptr        var err error        ret, _, err = getDllVersion.Call()        fmt.Printf("%d.%d\n", byte(ret), uint8(ret>>8))        fmt.Println(err)        path := "C:\\Program Files (x86)\\AliWorkbench"        _, _, err = setQianNiuPath.Call(strPtr(path), lenPtr(path))        fmt.Println(err)}
执行结果
$ GOARCH=386 go run main.go1.0The operation completed successfully.SetQianNiuPath, C:\Program Files (x86)\AliWorkbench 35SetQianNiuPath result 0The operation completed successfully.

关于GOlang中怎么调用 DLL 类库问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

0