I am able to write a vector<double>

vector<double> a;
//fill a
vsl_b_ofstream output("test.bin");
vsl_b_write(output, a);

and I am able to write a vnl_double_3x3
vector<double> a;
//fill a
vsl_b_ofstream output("test.bin");
vsl_b_write(output, a);

but I am unable to write a vector<vnl_double_3x3>. Is that correct? Or have I done something wrong? Here is the code:

    unsigned int num = 10;
    vector<vnl_double_3x3> a(num);
   
    srand48((unsigned)time(0));
    for(unsigned int i = 0; i < num; i++)
        a[i] = RandomMatrix();
   
    vsl_b_ofstream bfs_out(Filename);
    vsl_b_write(bfs_out, a);
    bfs_out.close();

It says undefined reference to vsl_b_write with that type.

Thanks,

David