arrays - 戈朗 : unsafe dynamic byte array

标签 arrays pointers dll go

我正在尝试使用 Go 与 Windows dll 进行交互。我要使用的 dll 函数接受一个指向字节数组的指针。因此我需要给它那个字节数组。

我正在使用 syscall调用 dll 的库,如图所示 here .我的基本要求是:

  • 我得到了字节数组所需的大小
  • 我创建字节数组
  • 我必须得到一个指向字节数组的指针
  • 然后我将指针传递给 Windows dll

我不知道如何在 go 中创建字节数组,并获取指向它的指针。这显然是一个不安全的操作,unsafe库可能会有帮助,但我需要首先创建一个动态长度字节数组。使用“make”创建 slice 对我没有帮助,除非我可以获得指向 slice 支持数组的指针。

有没有其他人遇到过这个或有任何想法?

最佳答案

我认为 syscall.ComputerName 实现 https://golang.org/src/syscall/syscall_windows.go#395将是一个很好的例子。它使用 uint16s,而不是字节,否则......

在您的情况下,它将是 ptr := &myslice[0]

亚历克斯

关于arrays - 戈朗 : unsafe dynamic byte array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19721008/

相关文章:

php - 拆分嵌套数组以在 php 中使用

c++ - 在 C/C++ 中声明 typedef 枚举数组组合的正确方法是什么?

java - 替换数组中的重复字符

c - int (*arr)[20] 和 int arr[][7] 之间有什么区别

c++ - 遇到中断语句时重新初始化指针变量

dll - 获取 Qt 5 附加插件的路径

c# - 添加引用asp.net后编译错误

c++ - 具有重复数字的数组的嵌套循环

c - 为什么编译器不生成错误 "lvalue required"?

c++ - 在 metatrader4 中创建一个基本的 dll