Нет, это не так.
Различные компиляторы C имеют взаимозаменяемый код с использованием стандартного ABI. Вы можете смешать и сопоставить свой объектный код более или менее с безнаказанностью.
Однако различные компиляторы C++ имеют множество различных соглашений, которые означают, что их объектный код несовместим. Они относятся к макету классов (особенно в нескольких иерархиях наследования и страшном «алмазе смерти»), но также в соглашениях об управлении именами и обработке исключений. Схемы изменения имени намеренно различаются, поэтому вы не можете случайно связать объекты с одним компилятором с другим.
Как правило, если библиотеки построены с использованием компилятора C++, вы должны связать свой код с использованием того же самого или, по крайней мере, совместимого компилятора C++. И это почти всегда означает компилятор из той же семьи. Например, вы могли бы использовать G ++ 4.5.0, даже если код был построен с G ++ 4.4.2. Однако вы не сможете смешать aCC с G ++.