2016-05-31 6 views
0

Ich versuche, komplexere Datentypen mit Boost mpi zu übergeben. Ich implementiere die Beispielcodes in http://theboostcpplibraries.com/boost.mpi-simple-data-exchangeWie sende ich einen String-Typ mit boost_mpi?

Zuerst versuche ich, eine Zeichenfolge als ein Array von Zeichen zu senden, die aus dem oben genannten Tutorial Beispiel 47.5 funktioniert. Der Code ist:

#include <boost/mpi.hpp> 
#include <iostream> 

int main(int argc, char *argv[]) 
{ 
    boost::mpi::environment env{argc, argv}; 
    boost::mpi::communicator world; 
    if (world.rank() == 0) 
    { 
    char buffer[14]; 
    world.recv(boost::mpi::any_source, 16, buffer, 13); 
    buffer[13] = '\0'; 
    std::cout << buffer << '\n'; 
    } 
    else 
    { 
    const char *c = "Hello, world!"; 
    world.send(0, 16, c, 13); 
    } 
} 

Ich konnte kompilieren und es in Ordnung mit den folgenden Befehlen ausführen:

mpic++ -std=c++0x 3.cpp -o 3 -lboost_mpi

mpiexec -np 3 ./3

Dann habe ich versucht, den Typen String zu ändern (von gleichem Tutorial Beispiel 47,5):

#include <boost/mpi.hpp> 
#include <boost/serialization/string.hpp> 
#include <string> 
#include <iostream> 

int main(int argc, char *argv[]) 
{ 
    boost::mpi::environment env{argc, argv}; 
    boost::mpi::communicator world; 
    if (world.rank() == 0) 
    { 
    std::string s; 
    world.recv(boost::mpi::any_source, 16, s); 
    std::cout << s << '\n'; 
    } 
    else 
    { 
    std::string s = "Hello, world!"; 
    world.send(0, 16, s); 
    } 
} 

Wenn ich diesen Code kompilieren und verknüpfen, bekam ich folgende Fehlermeldung:

> /usr/bin/ld: /tmp/ccRNu1AY.o: undefined reference to symbol '_ZTIN5boost7archive6detail14basic_iarchiveE' 
> //usr/lib/x86_64-linux-gnu/libboost_serialization.so.1.54.0: error adding symbols: DSO missing from command line 
> collect2: error: ld returned 1 exit status 

Jede Hilfe würde sehr geschätzt werden.

Antwort

1

Sie könnten die Compiler-Option hinzufügen:

-lboost_serialization

+0

, die funktioniert! Danke. Wie kann ich Boost-Bibliotheken für die Zukunft auflisten, falls ich ähnliche Probleme mit anderen MPI-Funktionen habe? – Mehrdad

Verwandte Themen