Projekt Mrowisko w SFLM . Błędy undefind references

0

Cześć. Dopiero zaczynam z programowaniem. Muszę zrobić symulator mrowiska w C++. Robię to w codeblocksie z użyciem SFML. Wywala mi takie błędy po próbie odpalenia. O co może chodzić ? Pomoże ktoś
Zrzut ekranu 2023-01-09 185036.pngZrzut ekranu 2023-01-09 185412.png

#include <SFML/Graphics.hpp>
#include <cstdlib>
#include <ctime>

enum class AntType { Queen, Soldier, Worker };

struct Ant {
 AntType type;
 sf::CircleShape shape;
 sf::Vector2f velocity;
};

int main() {
 sf::RenderWindow window(sf::VideoMode(400, 400), "Anthill");
 window.setFramerateLimit(60);

 std::srand(std::time(nullptr));

 AntType antTypes[] = {AntType::Queen, AntType::Soldier, AntType::Worker};
 sf::Color antColors[] = {sf::Color::Red, sf::Color::Blue, sf::Color::Green};

 // Dynamic list of ants.
 Ant* ants = nullptr;
 size_t numAnts = 0;

 // Counts of each type of ant.
 size_t queenCount = 0;
 size_t soldierCount = 0;
 size_t workerCount = 0;

 // Text to display the counts.
 sf::Font font;
 if (!font.loadFromFile("arial.ttf")) {
   return 1;
 }
 sf::Text queenText("", font, 16);
 queenText.setPosition(10, 10);
 sf::Text soldierText("", font, 16);
 soldierText.setPosition(10, 30);
 sf::Text workerText("", font, 16);
 workerText.setPosition(10, 50);

 while (window.isOpen()) {
   sf::Event event;
   while (window.pollEvent(event)) {
     if (event.type == sf::Event::Closed) {
       window.close();
     } else if (event.type == sf::Event::MouseButtonPressed) {
       // Add a new ant at the mouse position.
       AntType type = antTypes[std::rand() % 3];
       Ant* newAnts = new Ant[numAnts + 1];
       for (size_t i = 0; i < numAnts; ++i) {
         newAnts[i] = ants[i];
       }
       newAnts[numAnts].type = type;
       newAnts[numAnts].shape.setRadius(5);
       newAnts[numAnts].shape.setFillColor(antColors[static_cast<int>(type)]);
       // ... continued from above
 newAnts[numAnts].shape.setPosition(event.mouseButton.x, event.mouseButton.y);
 newAnts[numAnts].velocity = sf::Vector2f(std::rand() % 5 - 2.5f, std::rand() % 5 - 2.5f);
 delete[] ants;
 ants = newAnts;
 ++numAnts;
 switch (type) {
   case AntType::Queen:
     ++queenCount;
     break;
   case AntType::Soldier:
     ++soldierCount;
     break;
   case AntType::Worker:
     ++workerCount;
     break;
 }
}

// Update the counts.
queenText.setString("Queens: " + std::to_string(queenCount));
soldierText.setString("Soldiers: " + std::to_string(soldierCount));
workerText.setString("Workers: " + std::to_string(workerCount));

// Update the positions of the ants.
for (size_t i = 0; i < numAnts; ++i) {
 ants[i].shape.move(ants[i].velocity);
 if (ants[i].shape.getPosition().x < 0 || ants[i].shape.getPosition().x > window.getSize().x ||
     ants[i].shape.getPosition().y < 0 || ants[i].shape.getPosition().y > window.getSize().y) {
   ants[i].velocity = -ants[i].velocity;
 }
}

window.clear();

// Draw the ants.
for (size_t i = 0; i < numAnts; ++i) {
 window.draw(ants[i].shape);
}

// Draw the counts.
window.draw(queenText);
window.draw(soldierText);
window.draw(workerText);

window.display();
}

delete[] ants;

return 0;
}}
0

@Podsia: Chodzi o to, że jest problem z linkowaniem biblioteki. Jak to ustawiłeś?

0

Jeśli chodzi o ustawienia to tylko coś takie robiłem. Ta zielona kropeczka ze strony sflm działa jak odpalam No i przy tworzeniu projektu dałem Console AplicationZrzut ekranu 2023-01-09 191224.pngZrzut ekranu 2023-01-09 191243.pngZrzut ekranu 2023-01-09 191256.pngZrzut ekranu 2023-01-09 191320.png

0

@Podsia: Z tego co kojarzę to SFML posiada różne libki dla grafiki, okienek itd. Pokaż co masz w folderze SFML-2.5.1/lib

0
Eldorad O. napisał(a):

@Podsia: Z tego co kojarzę to SFML posiada różne libki dla grafiki, okienek itd. Pokaż co masz w folderze SFML-2.5.1/lib

1.png2.png

0

"Undefined references" to błąd, który mówi, ze używasz funkcji/zmiennej, która nie ma nigdzie deklaracji, czyli po prostu jej nie ma najprościej mówiąc.

U Ciebie są to funkcje SFML(jeśli dobrze pamiętam, że FT_costam to SFML), więc może problem występuje z linkowaniem tych bibliotek do twojego kodu. Ewentualnie zapomniałeś dodać jakiegoś headera.

0

Dopisz tam do link libraries: freetype, bo z tego co widzę to jest wymagana do tego FT_

1 użytkowników online, w tym zalogowanych: 0, gości: 1