c - Golang 在 Linux 中使用 .so
问题描述
如何.so
在 Linux 上加载?
在 Windows 上,我做这样的事情:
h, e = syscall.LoadLibrary("name.dll")
if e != nil {
log.Fatal(e)
}
defer syscall.FreeLibrary(h)
.so
是否可以在带有库的 Linux 上做到这一点?
proc, e := syscall.GetProcAddress(h, processName) //One of the functions in the DLL
if e != nil {
log.Fatal("errror:", e, processName)
}
pid, _, _ := syscall.Syscall6(uintptr(proc), uintptr(paramSize), a1, a2, a3, 0, 0, 0) //handler, countParam, param, 0 // zawiera jakiegoś print "Hello World" - value
fmt.Println(processName, pid)
我想获取函数(进程)地址并用它来调用 syscall.Syscall6。
使用 CGo 有答案,但它并不完整,也没有解释如何使这个函数无效并将参数传递给它。
解决方案
推荐阅读
- java - 如何在arraylist中将char与int分开
- python - 如何在 jupyter 笔记本中嵌入 linux 终端?
- r - 如何将 bind_rows 与 tibble 一起使用?
- php - 如何在 Angular JS 1.6.9 中将数据发布/更新到 PHP?
- jquery - 使用jQuery仅在具有其他字符的div中选择数字
- r - 按大小写拆分字符串
- azure - Azure 机器学习服务在哪里缓存数据?
- python - 使用 scapy 从 pcap 文件中提取有效负载中的特定字节
- excel - 用于将所有数据转换为具有任意数量分隔符的列的 VBA 代码
- laravel - 如何在 Google Cloud 中访问 Laravel 文件夹