Ошибка связывания обычно означает, что метод, функция или что-то подобное имеет объявленный прототип, но нигде не реализован. Это также может означать, что вы не включили библиотеку или фреймворк в свое приложение, но используете файлы заголовков из этой библиотеки или фреймворка.
Также хорошо работает numString, вы возвращаете указатели на статические строки, которые были сгенерированы во время компиляции.