Even if you are using C++, your sparse matrix will consist of three arrays (one for the data, one for the column indices, and one for the size of the rows), which you could extract and feed even to C routines/libraries. If it uses std::vector for the data just use &vector[0] to convert to C arrays. Thus you could use SuperLU, MUMPS or others to do the actual solve