Golang zmq 绑定,ZMQ4,返回包错误未找到文件 zmq.h

use*_*946 5 package go filepath zeromq cgo

我试图在 Go 应用程序中包含 ZMQ 套接字,但 zmq4 和 gozmq (Go 的 ZMQ 绑定库)都给我带来了问题。我想了解为什么 zmq4 在我的系统上无法导入。

我运行的是 Windows 8 系统,并且使用了 ZMQ 网站上的 Windows 安装程序,版本为 4.0.3。我主要关心的是如何设置 zmq4,这是我在 github 库位置上进行“go get”查询的结果:

> go get github.com/pebbe/zmq4
# github.com/pebbe/zmq4
polling.go:4:17: fatal error: zmq.h: No such file or directory
compilation terminated.
Run Code Online (Sandbox Code Playgroud)

克隆 Github 存储库并不能缓解此问题 - 错误仍然相同。

我知道这个问题与位于我的 ZMQ 安装的“include”文件夹中的 C 库 zmq.h 有关,但依赖关系是由路径问题还是外部工具问题所阻碍对我来说是个谜。

关于 node.js 也出现了类似的错误,这是我在节点脚本之外看到其他人提到的解决方案,但在我的例子中并不成功。

到目前为止,我已将“include”文件夹的路径包含在我的 PATH 环境变量中,并且之前将 zmq.h 放置在 zmq4 顶级文件夹中。我没有太多的武器库来理解这个问题,因为我是 C 和 C 语言的新手,在 Go 中导入包

iva*_*arg 2

我想做同样的事情,但在 Windows 7 上,这是我必须做的。

由于Go绑定使用cgo与zeromq集成,因此您需要使用gcc构建zeromq。没有预先构建的二进制文件,因此您必须使用 mingw 或类似工具自己构建它们,但这个过程比听起来更容易,并且在Zeromq 站点上有很好的描述。

正如 @photoionized 指出的,C_INCLUDE_PATH需要LIBRARY_PATH在构建 Go 绑定时进行设置。

IN6_ADDR(就我而言,我在编译未定义的libzmq 时遇到了问题。我发现的唯一解决方案是受此问题启发,手动将该行添加#include <in6addr.h>到 windows.hpp 文件中。)