Hi,
I can not write serialization function for my structure.
When I compile this I get very strange errors.
Can someone help me please?

#include <boost/mpi/environment.hpp>
#include <boost/mpi/communicator.hpp>
#include <boost/mpi/collectives.hpp>
#include <boost/thread/barrier.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/config.hpp>
#include <string>
#include <iostream>
#include <vector>
#include <boost/archive/text_oarchive.hpp>
#include <boost/archive/text_iarchive.hpp>
#include <boost/serialization/access.hpp>
#include <boost/serialization/string.hpp>
#define MASTER 0

using namespace std;
namespace mpi = boost::mpi;


struct field {
    string field_name;
    string field_type;
    string field_ref;
    string field_colType;   
   
};

namespace boost {
    namespace serialization{
        template<class Archive>
        void serialize(Archive & ar, field & f,  unsigned int version){
            ar & f.field_name;
            ar & f.field_type;
            ar & f.field_ref;
            ar & f.field_colType;
        }
    }
}

int main(int argc, char* argv[])
{
    mpi::environment env(argc, argv);
    mpi::communicator world;
    int m_mySize, w_mySize, kk,i;   
    field *relAllValues;
    field *relMyValues;
    vector<field> C;
    w_mySize = arraySize / world.size();
    if (world.rank() == MASTER){     
          m_mySize = arraySize / world.size() + arraySize % world.size();
        relMyValues = (field *) malloc(m_mySize);
        allValues = (int *) malloc(arraySize);
    }
      else{
          relMyValues = (field *) malloc(w_mySize);
      }
      if (world.rank() == MASTER){
          scatter(world, C, relMyValues, w_mySize, 0);
      }
      else{
          scatter(world, a, myValues, w_mySize, 0);
      }
}