【发布时间】:2021-11-15 04:19:26
【问题描述】:
当我尝试运行这个简单的程序时 (https://zeromq.org/get-started/?language=cpp&library=zmqpp#)
#include <zmqpp/zmqpp.hpp>
#include <string>
#include <iostream>
#include <chrono>
#include <thread>
using namespace std;
int main(int argc, char *argv[]) {
const string endpoint = "tcp://*:5555";
// initialize the 0MQ context
zmqpp::context context;
// generate a pull socket
zmqpp::socket_type type = zmqpp::socket_type::reply;
zmqpp::socket socket (context, type);
// bind to the socket
socket.bind(endpoint);
while (1) {
// receive the message
zmqpp::message message;
// decompose the message
socket.receive(message);
string text;
message >> text;
//Do some 'work'
std::this_thread::sleep_for(std::chrono::seconds(1));
cout << "Received Hello" << endl;
socket.send("World");
}
}
我收到此错误:
master/pubSub/pub.cpp:3:10: fatal error: 'zmqpp/zmqpp.hpp' file not found
#include <zmqpp/zmqpp.hpp>
我也明白了:
Uncaught TypeError: Callback must be a function. Received undefined
fs.js:135
显然,这似乎是因为我没有正确安装 ZMQ。我尝试了两种安装方式:
方法一失败:
- 已安装 Homebrew (https://brew.sh/)
- 然后在终端:brew install zmq
方法 #2 失败
- 已下载 cppzmq zip 文件 (https://github.com/zeromq/cppzmq)。解压这个名为 cppzmq-master 的文件
- 已下载 Cmake
- 在终端中安装了 Cmake:brew install cmake
- 在终端中,将目录更改为 cppzmq-master
- mkdir 构建
- cd 构建
- cmake ..
- sudo make -j4 安装
不知道我哪里出错了;对此仍然很陌生,因此非常感谢您的反馈!
ZMQ网站供参考:https://zeromq.org/
来源
【问题讨论】:
-
你的 cmake 文件中有
find_package(ZeroMQ REQUIRED)吗?然后target_link_libraries给它添加一个依赖? -
@Cory Kramer 我没有。请原谅我的经验不足,但是我需要为此使用哪个 Cmake 文件? Cmake 目标文件?还是别的什么?
-
是的,您在代码目录的根目录下创建了一个
CMakeLists.txt文件,它指定了您的源文件等。您现在如何构建,Visual Studio、gcc、makefile 等? -
它可能是您在应用程序代码根文件夹中的 CMakeLists.txt 文件。如果您没有使用 CMake 为您的应用程序生成项目文件或 makefile,您将不得不解释您是如何构建的。您可能需要为编译器设置包含目录并手动将库添加到链接器设置中。
-
@CoryKramer 我正在使用 Atom 和一个附加组件构建,它允许我通过右键单击并选择“编译并运行”来使用 g++ 自动编译和运行终端。我去了 CMakeLists.txt 文件,我认为(我可能错了)你前面提到的行在那里。这里有什么建议吗?
标签: c++ cmake zeromq pyzmq czmq