Yes it is possible, observing the following:
1) Any exported functions in the C++ library will need to be marked extern "C"
.
2) Only ever pass plain old data types (PODs) between C and C++ libraries. You might get away with structures but make sure you pack the elements consistently.
3) Never allocate memory in a C library and free it in the C++ library and vice-versa. String allocation in particular can be a pain: the normal thing to do is pass a buffer with a size and the function returns the amount of data that could have been written to that buffer.
4) Never throw exceptions across the library boundaries. Use an error information type object in the C++ library bound to each thread (easy in C++11 as you have std::this_thread
etc.)