Hello,
I am using OpenMPI v1.6.1 on Windows 7, and some time i am looking for any solution to send a struct with vector or using dynamics arrays.
I know send structs with differents datatypes, like int, double, struct. But i have some problem sending vector or dynamics arrays.

Using MPI_Type_vector, MPI_Type_continuous or MPI_Type_extend i dont resolve....

Code: 

#include "mpi.h"
#include <iostream>
#include <time.h>  
#include <vector>

using namespace std;

struct Teste6{
vector<int> t6;
};

int main(int argc, char** argv)
{
MPI_Datatype struTeste6, oldTTeste6[1], newTTeste6;
int blcklensTeste6[1];
MPI_Aint offsTeste6[1], extTeste6;

Teste6 tst6;
int max;
int myRank;
MPI_Status status;
MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &myRank);
MPI_Comm_size(MPI_COMM_WORLD, &max);
// Teste6
//MPI_Type_vector(2,1,1,MPI_INT, &newTTeste6);
MPI_Type_contiguous(2, MPI_INT, &newTTeste6);
offsTeste6[0] = 0;
oldTTeste6[0] = newTTeste6;
blcklensTeste6[0] = 1;
MPI_Type_struct(1, blcklensTeste6, offsTeste6, oldTTeste6, &struTeste6);
MPI_Type_commit(&struTeste6);
//
if(myRank == 0)
{
                //Add element 5 and element 10 to vector on struct
tst6.t6.push_back(5);
tst6.t6.push_back(10);
                //Print elements to look before send
printf("\n myRank: %d - tst6.t6[0]: %d - tst6.t6[1]: %d", myRank, tst6.t6[0], tst6.t6[1]);
//Send to Process 1
MPI_Send(&tst6, 1, struTeste6, 1, 1, MPI_COMM_WORLD);
}
else
{
                // Receive from Process 0
MPI_Recv(&tst6, 1, struTeste6, 0, 1, MPI_COMM_WORLD, &status);
//This code dont print received struct, some problem here, process die.
printf("\n Slave 1 - myRank: %d - tst6.t6[0]: %d - tst6.t6[1]: %d", myRank, tst6.t6[0], tst6.t6[1]);
}

MPI_Finalize();
return 0;
}

--
Thanks

Atenciosamente,
Jéferson Fernandes da Silva