【发布时间】:2016-03-06 17:29:15
【问题描述】:
关于加载共享库和在 Windows 上使用 syscall 包调用函数有一个很好的描述 (https://github.com/golang/go/wiki/WindowsDLLs)。但是,此描述中使用的函数LoadLibrary 和GetProcAddress 在Linux 的syscall 包中不可用。我找不到有关如何在 Linux(或 Mac OS)上执行此操作的文档。
感谢您的帮助
【问题讨论】:
-
你可能会发现这个包很有用:github.com/rainycape/dl
-
@TimCooper 请注意,“gopkgs.com”无法访问,is an NXDOMAIN。因此可以安全地假设该站点已死。
-
@MarkusWMahlberg:仍然可以使用
go get -u github.com/rainycape/dl获取包。 -
“官方”(强烈推荐)的方法是使用 cgo。 Windows 在 syscall 包中有这些,因为 Windows 需要为某些功能加载 DLL。 Linux 不需要为任何系统调用加载共享库,因此没有内置支持。
-
我建议查看 Go 运行时的
syscall.go和*syscall_linux[_$GOARCH].go文件的源代码。golang.org/x/sys包也可能很有趣。
标签: go system-calls