Richard,
If you create a straight C header that's able to call into the C++ library then what you're trying to do will work. This is the standard (though frustrating) approach to using C++ libraries within Haskell. I can send you an example cabal file for building the Haskell code against the C headers and archives if you'd like. There isn't much more to it than what you're already doing though. The key is that the headers have to be pure C and you have to force cabal to build the C code with g++ (since the implementing .c files will necessarily make C++ calls).
Thanks,
Arjun