В моей игре есть функция обновления, которая содержит следующий код:
void DrawMiniFPSCounter();
DrawMiniFPSCounter();
DrawMiniFPSCounter()
Функция объявлена в файле с именем miniFPSCounter.cpp, который является частью цели сборки (я использую Xcode). При сборке я получаю ошибку компоновщика о том, что DrawMiniFPSCounter
символ не найден Я попытался удалить объявление выше и просто позвонил DrawMiniFPSCounter()
но это приводит к ошибке «символ не найден» во время компиляции. Почему у компоновщика проблемы с поиском этого символа? Это как-то связано с порядком, в котором символы разрешаются в проекте?
РЕДАКТИРОВАТЬ: я управлял командой nm hrMiniFPSCounter.o | grep Draw
в моем каталоге сборки, и получил следующий вывод:
00000000 T __Z15DrawMiniCounteriiiii
0002d040 S __Z15DrawMiniCounteriiiii.eh
00000a00 T __Z18DrawMiniFPSCounterv
0002d148 S __Z18DrawMiniFPSCounterv.eh
00000560 t __ZL9DrawDigitiiib
0002d128 s __ZL9DrawDigitiiib.eh
это нормально? Почему лишние символы в конце имен функций?
По моему опыту наиболее распространенные «ошибки»:
Вы уверены, что файл miniFPSCounter.cpp скомпилирован (/ был правильно включен в проект)? Я предполагаю, что то, что вы испытываете, может быть вызвано несколькими причинами, но в отсутствие дополнительной информации я бы сказал: попробуйте убедиться, что файл cpp компилируется (возможно, внесите несколько синтаксических ошибок, которые могут привести к компиляции ошибка, если она действительно скомпилирована) и когда вы в этом уверены, вы можете начать проверять другие вещи (например, если они правильно связаны и т. д.)
Изменить: положить контрольный список сверху.
Других решений пока нет …