Я собрал библиотеку с g++
, и я хочу связать ее с gcc
.
Проблема я получаю ошибку при линковании против него:Как удалить окружающие символы вокруг символа в общей библиотеке?
неопределенная ссылка на «functionName`
(FunctionName это имя функции в библиотеке)
хотя функции существует в списке символов, и я указываю путь к gcc
при связывании.
Это происходит потому, что функция появится в списке с окружающими символами (я думаю, что это для подмены?):
Z12functionNameiSt9__va_list
Я знаю, что для удаления этих символов я должен окружать объявление функции с extern "C"
, И я сделал это:
//header.hpp
extern "C" int functionName(int argc, ...);
Но окружающие символы по-прежнему появляются вокруг имени функции в списке символов. И вот почему gcc
не может его найти.
я кросс компиляции для Linux руки yokto с arm-poky-linux-gnueabi-gcc
и arm-poky-linux-gnueabi-g++
на Ubuntu Desktop 16.
Почему не окружающие символы удаляются, и как я могу удалить их? Я никогда не буду переопределять эту функцию, поэтому, если они действительно предназначены для переопределения, мне они не нужны.
редактировать:
решаемая. Подпись функции в ее декларации отличалась от подписи в ее определении ... Поэтому ключевое слово extern
было ни за что.
int functionName(int argc, ...); //declaration
int functionName(int argc, va_list args) //definition
Возможно, вы забыли '#include' –
@BasileStarynkevitch - Включено –