Presumably, C interop is the cause of C++'s problems because it was the impetus for carrying forward all of C's warts into C++. And it is the solution because it allows you to put C++ code behind a C-compatible interface so that you can use it from a language that isn't C++.
The "Design and Evolution of C++" is a very nice book from Bjarne explaining his compromises regarding what eventually became C++98.