【问题标题】:Call to zmq_socket returns NULL and errno 14 (Bad address)调用 zmq_socket 返回 NULL 和 errno 14(错误地址)
【发布时间】:2017-12-01 18:04:01
【问题描述】:

我正在使用 ZeroMQ x86 在 Windows 8 VS 2012 上进行连接测试客户端/服务器应用程序。不幸的是,我在初始化连接时遇到了一些问题。现在我只是简单地复制(并稍微扩展了错误报告)示例hwserver.c 并使用以下代码进行初始化:

void* ctx;
void* rsp;
ctx = zmq_ctx_new();
DWORD dwErr = zmq_errno();
printf("Creating Context - %s\r\n", zmq_strerror(dwErr));

rsp = zmq_socket(ctx, ZMQ_REP);
dwErr = zmq_errno();
printf("Creating Socket - %s\r\n", zmq_strerror(dwErr));

调用zmq_socket 失败,返回rsp == NULLdwErr==14:地址错误。鉴于这与示例代码几乎相同,但它失败了,我没有答案。也许有人知道那个电话有什么问题。也许这是使用 32 位二进制文​​件的兼容性问题?

【问题讨论】:

  • @antipattern 是否检查过关于 构建 64 位二进制文​​件 的备注,如 >>> lists.zeromq.org/pipermail/zeromq-dev/2010-June/004037.html
  • 感谢您的评论。但是,我不认为这适用于这里,因为我使用的是预构建二进制文件,而且我明确链接到 32 位二进制文​​件(我的应用程序规定,它与 64 位构建不兼容)
  • 您是否尝试过不加修改地复制并运行示例中的代码?
  • 是的,最初我从未修改的代码开始,但是它不会报告错误。它只是在绑定失败时断言。和我的帖子类似,responder==NULL
  • 你用的是什么版本的zmq?

标签: c zeromq


【解决方案1】:

当我不小心在我的系统上安装了旧版本的 libzmq 时,我遇到了类似的问题。一旦我删除它并安装了更新的版本,问题就消失了。

【讨论】:

  • 我不同意这不是我的问题的答案。事后回想我最初的问题,正是发生了什么事。
【解决方案2】:

所以,经过大量调试并尝试在新项目中重现错误后,我想出了以下解决方案:

libzmq.lib 必须是即将与项目链接的所有 .lib 的第一个条目。

【讨论】:

    猜你喜欢
    • 2012-04-08
    • 2015-08-26
    • 1970-01-01
    • 2016-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-06
    • 2012-09-11
    相关资源
    最近更新 更多