Ошибка компоновщика при объявлении функции непосредственно перед ее вызовом

В моей игре есть функция обновления, которая содержит следующий код:

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

это нормально? Почему лишние символы в конце имен функций?

0

Решение

По моему опыту наиболее распространенные «ошибки»:

  1. Был ли файл (действительно) скомпилирован?
  2. Было ли это (действительно) связано правильно?
  3. Вы дали функции имя, которое, как вы думали, вы сделали?
  4. новый Проблемы с пространством имен 🙂

Вы уверены, что файл miniFPSCounter.cpp скомпилирован (/ был правильно включен в проект)? Я предполагаю, что то, что вы испытываете, может быть вызвано несколькими причинами, но в отсутствие дополнительной информации я бы сказал: попробуйте убедиться, что файл cpp компилируется (возможно, внесите несколько синтаксических ошибок, которые могут привести к компиляции ошибка, если она действительно скомпилирована) и когда вы в этом уверены, вы можете начать проверять другие вещи (например, если они правильно связаны и т. д.)

Изменить: положить контрольный список сверху.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]