Golang zmq 绑定(bind),ZMQ4,返回包错误找不到文件 zmq.h

标签 go package zeromq filepath cgo

我试图在 Go 应用程序中包含 ZMQ 套接字,但 zmq4 和 gozmq(Go 的引用 ZMQ 绑定(bind)库)都给我带来了问题。我想了解为什么 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.

克隆 Github 存储库并没有缓解这个问题 - 错误仍然存​​在。

我知道这个问题与位于我的 ZMQ 安装的“include”文件夹中的 C 库 zmq.h 有关,但是依赖性是由路径问题还是外部工具问题引起的还是个谜大部头书。

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

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

最佳答案

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

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

正如@photoionized 指出的那样,C_INCLUDE_PATHLIBRARY_PATH需要在构建 Go 绑定(bind)时设置。

(在我的例子中,我在编译 libzmq 时遇到了一个问题 IN6_ADDR 没有被定义。我找到的唯一解决方案是,在 this issue 的启发下,手动将行 #include <in6addr.h> 添加到 windows.hpp文件。)

关于Golang zmq 绑定(bind),ZMQ4,返回包错误找不到文件 zmq.h,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22240636/

相关文章:

xml - 如何使用golang编码/xml读取具有不同根的xml内容

Javapackager – native 打包/独立应用程序附加信息

multithreading - 线程中的并行包切换

c# - 使用命令行单声道构建 zeromq helloworld 示例

go - docker注册的驱动在源码哪里初始化?

json - 我应该如何处理源代码中的大块文本,以免影响代码的可读性?

c# - NetMQ 中 RouterSocket 上的轮询器

c++ - ZeroMQ 并发发布和订阅

database - Go 中多线程 LevelDB 的合适方法是什么?

r - '<<-' 分配没有可见绑定(bind)