Ожидаемая подпись внешнего символа в статической библиотеке

У меня статическая библиотека 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);

?

Другие вопросы по тегам