неопределенная ссылка на ошибки при связывании статической библиотеки C с кодом C
При попытке связать статическую библиотеку C с кодом C вы можете возникают ошибки «неопределенная ссылка на», несмотря на изменение порядка ссылок. Эта проблема возникает из-за разных имен символов, созданных компиляцией C и C, известных как «искажение имен».
В C компоновщик отображает имена расчлененных символов в сообщениях об ошибках, что может сбивать с толку. Проверка объектного файла (*.o) с помощью «nm -u» показывает, что имена символов, на которые ссылаются, не совпадают с именами в библиотеке.
Чтобы решить эту проблему, функции, связанные как внешние функции, были скомпилированы с использованием В компиляторе C объявления функций должны быть заключены в блок "extern "C" {}". Это подавляет искажение имен C для всего внутри блока.
Например:
extern "C" {
#include
#include
}
Альтернативно вы можете обернуть объявления функций в файлы заголовков следующим образом:
#if defined (__cplusplus)
extern "C" {
#endif
/*
* Put plain C function declarations here ...
*/
#if defined (__cplusplus)
}
#endif
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3