2013-04-24 5 views
11

AufWie installiert man die C++ - Bindung für ZeroMQ unter Mac OS X?

g++ actualApp.cpp -lzmq 

ich

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 

für

// 
// 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; 
} 

I zeromq auf Mac OS X wie diese installiert haben - ./configure, make, make install.

Ich kann die C-Beispiele ohne Fehler mit dem -lzmq Flag kompilieren.

Wie soll ich dieses C++ .hpp Header von https://github.com/zeromq/cppzmq verwenden?

+0

wie Sie den C++ Code kompilieren? –

+0

Ich habe das C wie folgt - gcc actualApp.c -lzmq –

+0

Ich habe für C++ versucht - g ++ actualApp.cpp -lzmq –

Antwort

6

zog ich die Datei zmq.hpp nach/usr/local/include wo zmq.h auch

2

Sie haben keinen Pfad zu den Include-Dateien und Ordner lib wenn libzmq.so in ein anderes vorausgesetzt, es war ist Mappe. Sie müssen

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

Sie wahrscheinlich auch -o outFileName geben möchten verwenden, wenn Sie die ausführbare Datei wollen a.out

+0

Ich habe sowohl die Kopfzeile und Quelldatei nach/usr/local/include verschoben und es heißt immer noch "fataler Fehler : keine solche Datei oder kein Verzeichnis ': 'g ++ asyncserver.cpp -std = C++ 11 -I/usr/local/include -L/usr/local/include -lzmq -o asyncserver' – anon58192932

3

How should I use this .hpp https://github.com/zeromq/cppzmq file?

  1. Laden Sie die CPP-Bindung (die zmq.hpp Header ist nur benannt werden Datei) aus dem obigen Link.
  2. Stellen Sie sicher, dass diese Headerdatei beim Kompilieren enthalten ist. ex: g ++ yourfile.cpp -I (Pfad zu zmq.hpp) -lzmq
+0

Warum ist der Header von .hpp nicht im Tarball enthalten? – garyp

1

Add/usr/local/zu Ihrem Suchpfad enthalten