14

g++ actualApp.cpp -lzmq 

我明白了

actualApp.cpp:6:19: error: zmq.hpp: No such file or directory
actualApp.cpp: In function ‘int main()’:
actualApp.cpp:13: error: ‘zmq’ has not been declared
actualApp.cpp:13: error: expected `;' before ‘context’
actualApp.cpp:14: error: ‘zmq’ has not been declared
actualApp.cpp:14: error: expected `;' before ‘socket’
actualApp.cpp:15: error: ‘socket’ was not declared in this scope
actualApp.cpp:18: error: ‘zmq’ has not been declared
actualApp.cpp:18: error: expected `;' before ‘request’
actualApp.cpp:21: error: ‘request’ was not declared in this scope
actualApp.cpp:28: error: ‘zmq’ has not been declared
actualApp.cpp:28: error: expected `;' before ‘reply’
actualApp.cpp:29: error: ‘reply’ was not declared in this scope
actualApp.cpp: At global scope:
actualApp.cpp:33: error: expected constructor, destructor, or type conversion at end of input

为了

//
//  Hello World server in C++
//  Binds REP socket to tcp://*:5555
//  Expects "Hello" from client, replies with "World"
//
#include <zmq.hpp>
#include <string>
#include <iostream>
#include <unistd.h>

int main () {
    //  Prepare our context and socket
    zmq::context_t context (1);
    zmq::socket_t socket (context, ZMQ_REP);
    socket.bind ("tcp://*:5555");

    while (true) {
        zmq::message_t request;

        //  Wait for next request from client
        socket.recv (&request);
        std::cout << "Received Hello" << std::endl;

        //  Do some 'work'
        sleep (1);

        //  Send reply back to client
        zmq::message_t reply (5);
        memcpy ((void *) reply.data (), "World", 5);
        socket.send (reply);
    }
    return 0;
}

我已经像这样在 Mac OS X 上安装了 zeromq - ./configure, make, make install.

-lzmq我可以使用该标志编译 C 示例而不会出错。

我应该如何使用来自https://github.com/zeromq/cppzmq.hpp的这个 C++头文件?

4

5 回答 5

7

我将文件 zmq.hpp 移动到 /usr/local/include 那里 zmq.h 也在那里

于 2013-04-24T03:05:32.357 回答
5

我应该如何使用这个 .hpp https://github.com/zeromq/cppzmq文件?

  1. 从上面的链接下载 CPP 绑定(只是 zmq.hpp 头文件)。
  2. 确保在编译时包含此头文件。例如:g++ yourfile.cpp -I(zmq.hpp 的路径)-lzmq
于 2014-01-27T18:27:38.507 回答
3

如果 libzmq.so 在另一个文件夹中,则您没有提供包含文件和 lib 文件夹的路径。你需要使用

g++ actualApp.cpp -I$(Path to ZMQ include files) -L$(Path to ZMQ library files) -lzmq

-o outFileName除非您希望为可执行文件命名,否则您可能还想提供a.out

于 2013-04-24T18:11:05.583 回答
2

我的食谱使用 Homebrew (2.1.11) 和 Xcode (10.3)。

步骤1

从 Homebrew 安装 ZMQ (4.3.2)

brew install zeromq

第2步

从 GitHub 克隆 cppzmq

git clone https://github.com/zeromq/cppzmq.git

第 3 步:可选

构建和测试 cppzmq。

cd /path/to/cppzmq
./ci_build.sh

第4步

设置 Xcode 项目。

  1. 复制cppzmp/zmq.hpp/usr/local/include
  2. 添加/usr/local/includeHeader Search Path_Build Settings
  3. 找出正确的标志:pkg-config --libs libzmq. 将结果Other Linker Flags放入Build Settings
  4. 添加#include <zmq.hpp>到您的源文件。
  5. 构建您的 Xcode 项目。
于 2019-09-13T05:45:21.003 回答
1

将 /usr/local/include 添加到您的搜索路径

于 2015-06-03T16:23:45.930 回答