TOP

Go调用Delphi编写的DLL
2019-08-04 00:07:27 】 浏览:55
Tags:调用 Delphi 编写 DLL

参数整数没有问题,但是如果是字符串,要注意几个细节。

记录如下:

1.Delphi定义函数的时候,字符串参数需要使用PChar类型

2.Go传递参数的时候要将字符串转成UTF16的指针,接收的时候采用uint16的切片。

 1     dll := syscall.MustLoadDLL("Encryptdll.dll")
 2     defer syscall.FreeLibrary(dll.Handle)
 3     f1 := dll.MustFindProc("test06")
 4     fmt.Println("f1>>>>", f1)
 5 
 6     p1, _ := syscall.UTF16PtrFromString("sql")
 7     p2 := make([]uint16, 100) // pass word limited length! syscall.MAX_PATH
 8 
 9     r1, r2, err := f1.Call(uintptr(unsafe.Pointer(p1)), uintptr(unsafe.Pointer(&p2)))
10     if err != nil {
11         fmt.Println(r1, r2, p1, p2, err.Error(), syscall.UTF16ToString(p2))
12     }

 


Go调用Delphi编写的DLL https://www.cppentry.com/bencandy.php?fid=78&id=227871

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇[系列] Go gRPC Hello World 下一篇exported function xxx should ha..