go - 使用来自 github 的包时尝试编译 golang 时出错
问题描述
我正在尝试在我的笔记本电脑上安装软件包 robotsgo。我使用命令go get github.com/go-vgo/robotgo
下载并安装它
然后我运行此代码,但它无法编译并返回以下错误
package main
import (
"fmt"
"github.com/go-vgo/robotgo"
)
func main() {
x, y := robotgo.GetMousePos()
fmt.Println("pos: ", x, y)
}
错误:
# command-line-arguments
C:\Go\pkg\tool\windows_amd64\link.exe: running gcc failed: exit status 1
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `default_logger':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../hook/windows/../logger_c.h:39: undefined reference to `__getreent'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../hook/windows/../logger_c.h:32: undefined reference to `__getreent'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `loggerProc':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/pub.h:97: undefined reference to `__getreent'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_port_retain':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:426: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_port_wait':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:453: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `port_list_signal_first':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:648: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `cleanup_ops':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:857: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_chan_retain':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:777: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_assert_print':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:146: undefined reference to `__getreent'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_port_create':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:390: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_port_free':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:358: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:349: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_port_release':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:432: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_port_signal':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:439: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `cleanup_ops':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:866: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:866: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `port_list_signal_first':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:651: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:651: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `recv_unbuf':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:1210: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o:C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:1180: more undefined references to `sched_yield' follow
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `try_op':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:1249: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_chan_release':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:783: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_chan_close':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:796: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `port_list_signal_first':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:651: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:651: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_chan_close':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:791: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_chan_buf_cap':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:830: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_chan_buf_len':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:843: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:835: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `cleanup_ops':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:866: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:866: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `recv_unbuf':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:1210: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:1180: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `port_list_signal_first':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:651: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o:C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:620: more undefined references to `sched_yield' follow
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `try_op':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:1249: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `port_list_add':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:597: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `port_list_signal_first':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:651: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:651: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:651: undefined reference to `sched_yield'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:651: undefined reference to `sched_yield'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `port_list_add':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:592: undefined reference to `__assert_func'
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:591: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `port_list_signal_first':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:648: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `eb_chan_select_list':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:1299: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `port_list_rm':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:617: undefined reference to `__assert_func'
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o:C:\Users\sieea\go\src\github.com\robotn\gohook/event/../chan/eb_chan.h:616: more undefined references to `__assert_func' follow
C:\Users\sieea\AppData\Local\Temp\go-link-143133203\000004.o: In function `dispatch_proc':
C:\Users\sieea\go\src\github.com\robotn\gohook/event/dispatch_proc.h:66: undefined reference to `__getreent'
collect2.exe: error: ld returned 1 exit status
我的系统路径中有 MinGW-W64,该代码和库可以在我的台式电脑上运行,但我不知道为什么它在我的笔记本电脑上不起作用。我已多次重新安装 MinGW、Go 和 Goland 以尝试使其正常工作,但我不知道问题出在哪里。
任何帮助表示赞赏
解决方案
尝试用https://jmeubank.github.io/tdm-gcc/替换您的 MinGW 安装
几天前,我在 Windows 上遇到了另一个 cgo 包,尝试了几个不同的 MinGW 版本等等。在网上的某个地方,我发现 GCC 的这个分布与 Win 上的 cgo 配合得很好。安装它,一切都像魅力一样工作!
我知道这不是一个非常详细的答案,但如果你只需要它工作 - 可能会有所帮助。
推荐阅读
- pandas - 对一列中的所有数据进行编码,如果数据具有相同的值,则分配相同的代码
- chart.js - Chart.js 散点图/气泡点样式自定义文本
- c - 枚举变量和开关案例
- python - 在 Python 中从 JSON 访问值
- python - 我的图像分类模型中 LSTM 层的形状错误
- r - 如何将 .dat 文件转换为 geotiff(光栅文件)
- angular - 布尔变量在角度中未定义
- python - 鸢尾花数据集上的变分自动编码器
- javascript - React Native Firebase 如何让自动文档 ID 增加 1
- c# - 如何在 Blazor WebAssembly 项目中使用 C# 9?