Articles of 走

让Vim在Windows下使用Go

如何configurationWindows下运行的Vim来编辑Golang代码? 我已经花了3个小时在这个主题上通过不完整的自我参考指南进行了漫游,我对此感到厌倦,最后感到沮丧。 好的更多细节。 我安装了Vim。 文件夹结构是: Program Files (x86) -> Vim vim80 autoload colors … vimfiles我的一个混乱的例子是vim-plug的安装指南,在关于Powershell的章节中, md ~\vimfiles\autoload 这些文件夹相对于什么? 我有一个现有的autoload文件夹,但它是在vim80文件夹,因此我的困惑。 前面提到的文件夹结构是Vim安装程序创build的默认文件夹结构。

无法在DLL中查找过程

为什么不能在dll中find指定的程序? 我有一个为Windows x86编译的my.dll库(操作系统是Windows 7 x64;但是我使用的是Go x86二进制文件 – LiteIDE – 而C#代码也是针对x86体系结构进行了显式编译的)。 我从C#使用它,它的工作原理: [DllImport("my.dll", EntryPoint = "my_function")] public static extern double my_function(double x); 但是,当我尝试使用它(在这里我试图find它)​​从通过: var ( dllMine = syscall.NewLazyDLL("my.dll") my_function = dllMine.NewProc("my_function") ) func main() { err := my_function.Find() if err != nil { fmt.Println(err) return } //… } 它说Failed to find my_function procedure in my.dll: The […]

ngrok如何在防火墙后面工作?

Ngrok( https://ngrok.com/ )应该允许您通过转发将本地端口和服务展示给万维网。 但是,如果我打开我的本地机器上的端口80,如下所示: ngrok 80 我回来了: Tunnel Status online Version 1.3/1.3 Forwarding http://3a4bfceb.ngrok.com -> 127.0.0.1:80 Forwarding https://3a4bfceb.ngrok.com -> 127.0.0.1:80 Web Interface http://127.0.0.1:4040 # Conn 0 Avg Conn Time 0.00ms 据我所知,任何对http://3a4bfceb.ngrok.com的请求都将通过端口80发送到本地计算机,但如果我坐在阻止传入通信的NAT /防火墙之后(这是一种非常常见的情况)。 ngrok是否会启动轮询请求以确定何时收到数据?

如何为GOPATH使用Samba服务器位置?

我正在尝试将我的GOPATH设置为共享的networking文件夹。 当我进入 export GOPATH=smb://path/to/shared/folder 我得到: go: GOPATH entry is relative; must be absolute path: "smb". Run 'go help gopath' for usage. 我也试着以w /“/”作为path前缀,但是它试图在根目录下创build一个文件夹。 谢谢!

双重引用的论点

我想执行使用exec包find Windows命令,但Windows正在做一些奇怪的转义。 我有这样的: out, err := exec.Command("find", `"SomeText"`).Output() 但是这是抛出错误,因为Windows正在转换这find /SomeText" 有谁知道为什么? 我如何使用exec包在Windows上执行find ? 谢谢!

在Go中枚举registry值(Golang)

我试图枚举在Windowsregistry中使用Go的值的列表,但我遇到了一些麻烦。 我已经尝试了两种方法:使用Go提供的syscall库调用RegEnumValue ,以及使用 RegEnumValue 使用Windows API包装器 。 在这两种情况下,我都有同样的问题。 这是我使用的代码(目前使用lxn的win库): var root win.HKEY rootpath, _ := syscall.UTF16PtrFromString("HARDWARE\\DEVICEMAP\\SERIALCOMM") fmt.Println(win.RegOpenKeyEx(win.HKEY_LOCAL_MACHINE, rootpath, 0, win.KEY_READ, &root)) var name_length uint32 = 72 var name *uint16 var key_type uint32 var lpData *byte var lpDataLength uint32 = 72 var zero_uint uint32 = 0 fmt.Println(win.RegEnumValue(root, zero_uint, name, &name_length, nil, &key_type, lpData, &lpDataLength)) win.RegCloseKey(root) 在这种情况下, […]

Go编译器有一个窗口设置选项吗?

我正在使用Go(6g)来编译GTK应用程序,我想知道是否有编译器/链接器选项使其成为Windows可执行文件而不是控制台可执行文件。 MinGW有一个-mwindows的选项,目前我不得不手动改变PE头,hex编辑器是烦人的。

golang:跨平台path.Dir

我想在Unix和Windows上使用path.Dir()和平台特定的目录。 请看代码: package main import ( "fmt" "path" ) func main() { fmt.Println(`path.Dir("a/b/c"): `, path.Dir("a/b/c")) fmt.Println(`path.Dir("c:\foo\bar.exe"): `, path.Dir(`c:\foo\bar.exe`)) } 这输出 path.Dir("a/b/c"): a/b path.Dir("c:\foo\bar.exe"): . 我想第二次调用path.Dir() (窗口)的东西 c:\foo 是否有可能告诉path.dir()使用Windows分隔符为我的程序在Windows上运行? 或者我应该总是将反斜杠\转正斜杠( / )? 这里的首选策略是什么?

Golang:调用Windows DLL函数

我正在写一个Go应用程序,调用到一个Windows DLL。 该DLL是用MSVC编写的,并使用__declspec(dllexport)具有外部“C”导出。 我的Go应用程序的顶部如下: //#cgo CFLAGS: -IC:/Repos/Module/include //#cgo LDFLAGS: -L. C:/Repos/Module/go/bin/MyModule.dll //#include <MyModule.h> import "C" 我从模块调用函数如下所示: nRet := C.moduleImpl_len() 问题是,当我尝试运行这个应用程序,我得到以下错误: C:\Users\MINDO~1\AppData\Local\Temp\go-build836751819\mod\modimpl\_obj\modimpl.cgo2.o: In function `_cgo_e2aaf076ab69_Cfunc_moduleImpl_len': C:/Repos/Module/go/src/mod/modimpl/modimpl.go:90: undefined reference to `moduleImpl_len' 我用DUMPBIN查看了DLL导出的符号,并且显示了正确的“moduleImpl_len”作为导出的符号。 这也是MyModule.h中定义的符号。 任何build议,我怎样才能得到符号链接,而不必去系统调用路线?

WSARecv不停止阅读

所以基本上,我使用WSARecv与我的客户端的这个function: type Conn struct { sd s.Handle sa s.SockaddrInet4 } func (c *Conn) Read(b []byte) (int, error) { dataBuf := s.WSABuf{Len: uint32(len(b)), Buf: &b[0]} flags := uint32(0) qty := uint32(0) err := s.WSARecv(c.sd, &dataBuf, 1, &qty, &flags, nil, nil) return int(qty), err } 同时服务器发送多个数据包(首先是8个字节,然后都是1000个字节)。 会发生什么情况是WSARecv在缓冲区b已满时不会停止读取。 所以当我记忆太多的时候,我得到了一个很难的答案: exception0xc0000005 0x8 0xc08203195f 0xc08203195f PC = 0xc08203195f syscall.Syscall9(0x7ff86cafe230,0x7,0x1f8,0xc08200b5d0,0x1,0xc08200b5f0,0xc08200b5e0,0x0,0x0,0x0,…)(十几行这样的行) 而我的程序崩溃当然。 […]