До сегодняшнего дня я всегда считал, что порядок передачи объектов и библиотек в g ++ на этапе компоновки не имеет значения.Затем сегодня я попытался связать код на С ++ с кодом на С.Я завернул все заголовки C во внешний блок "C", но компоновщику все еще не удалось найти символы, которые, как я знал, были в архивах объектов C.
Озадачен, я создал относительно простой пример, чтобы изолировать ошибку компоновкино, к моему большому удивлению, более простой пример связался без каких-либо проблем.
После небольшой проб и ошибок я обнаружил, что, эмулировав шаблон связывания, использованный в простом примере, я мог получить основной код для ссылки ОК,Сначала это был объектный код, затем объектный архив, например:
g++ -o serverCpp serverCpp.o algoC.o libcrypto.a
Может кто-нибудь пролить свет на то, почему это может быть так?Я никогда не видел этой проблемы при связывании обычного кода C ++.