#c #sfml #duplicate-symbol
Вопрос:
Я изучаю C на Mac и пытаюсь следовать вместе с разработкой игр SFML на примере книги. Любые очевидные места, где можно начать искать проблемы, когда я получу:
duplicate symbol __Z2dpi in:
/var/folders/f1/4ddx4sk171v4hp6s50c93zh40000gn/T/sfgamewindow-374355.o
/var/folders/f1/4ddx4sk171v4hp6s50c93zh40000gn/T/statemanager-3f5acc.o
[ plus 34 more similar duplicate symbols]
?
Будет ли это иметь какое-либо отношение к #в том числе?
Это моя команда сделать:
cd ~/Programming/CPP;
clang -g -O0 -Wall -std=c 14
-o Testgame
-I. -I/Users/johnrebekah/Programming/SFML source/include
-I/Users/johnrebekah/Programming/CPP/gameheaders
-lsfml-window.2.5.1
-lsfml-system.2.5.1
-lsfml-graphics.2.5.1
"/Users/johnrebekah/Programming/CPP/gameheaders/sfgamewindow.cpp"
"/Users/johnrebekah/Programming/CPP/gameheaders/statemanager.cpp"
"/Users/johnrebekah/Programming/CPP/gameheaders/introstate.cpp"
"/Users/johnrebekah/Programming/CPP/gameheaders/eventmanager.cpp"
"/Users/johnrebekah/Programming/CPP/gameheaders/game.cpp"
"/Users/johnrebekah/Programming/CPP/testgame.cpp"
Все перечисленные повторяющиеся символы взяты из первого файла в списке cpp в команде make в паре с различными другими файлами cpp…
Комментарии:
1. У вас где-нибудь есть символ, который называется
dpi
? Если да, пожалуйста, покажите содержащий файл.2. Ни один из перечисленных символов мне не понятен, это не то, что я написал в своих исходных файлах. Есть ли вероятность, что они из библиотеки SFML?
3. Подождите, я написал функцию отладки печати под названием dp… Я собираюсь попробовать это прокомментировать…
4.Согласно demangler.com
__Z2dpi
это функция под названием «dp», которая принимает целое число. И в сообщении об ошибке говорится, что оно определено в обоих /Users/johnrebekah/Programming/CPP/gameheaders/sfgamewindow.cpp и /Users/johnrebekah/Programming/CPP/gameheaders/statemanager.cpp5. Я прокомментировал функцию верхнего уровня в своем собственном заголовке, который я включил, и теперь предупреждение о дублировании символа исчезло, но у меня есть следующее:` ld: не удается открыть выходной файл для записи: Testgame, errno=21 для архитектуры x86_64 лязг: ошибка: команда компоновщика не удалась с кодом выхода 1«