Ожидаемая подпись внешнего символа в статической библиотеке
У меня статическая библиотека libTheLib.a
(составлено кем-то еще). Я пытаюсь связать это с моей программой. Одной из функций, которые эта библиотека требует для связывания, является GetName
, У меня есть функция void GetName(char*, int)
в моем проекте, но компоновщик все еще жалуется, что символ не найден. Я предполагаю, что, возможно, библиотека ищет функцию с другой сигнатурой. Я пытался с помощью nm
надеясь, что это покажет, что именно ищут, но все, что он говорит, это
U _GetName
что не очень полезно. Есть ли другой способ найти подпись символа, который он ищет? Или подпись не является частью символа, и на самом деле она может ссылаться на любой символ с таким именем?
Библиотека написана на C
Моя программа в C++
, но функция объявлена как
extern "C" GetName(char* c, int i) {...}
Кроме того, это использует clang
не gcc
, если это имеет значение (используя XCode)
1 ответ
1) Вы уверены, что имя функции и подпись верны?
2) почему
extern "C" GetName(char* c, int i) {...}
вместо
extern "C" GetName(char* c, int i);
?