Package A does not need to have interoperability enabled, but the main package must have C++ interoperability enabled to be able to use B, as using C++ interoperability is viral. Once main enables C++ interoperability, the C-based dependencies of A will be imported in C++ mode as well as Main needs to import A, and thus transitively it needs to import C-based dependencies of A. Basically, when you're building A by itself, the headers that A imports do not need to support C++, however, once you start importing A into Main, then the headers that A imports must support C++ as well.