Я изучаю C++ и знаю более щадящие языки. У меня есть небольшой проект, над которым я работаю, и я получаю следующие ошибки.
/src/main.cpp:10: неопределенная ссылка на SpriteAnimation::SpriteAnimation(char const*, int , int, int, int, float)' .../src/main.cpp:17: неопределенная ссылка на SpriteAnimation::Update(float)'
.../src/main.cpp :23: неопределенная ссылка на SpriteAnimation::Draw(Vector2, float, Color)' .../src/main.cpp:30: неопределенная ссылка на SpriteAnimation::~SpriteAnimation()'
. ../src/main.cpp:30: неопределенная ссылка на `SpriteAnimation::~SpriteAnimation()'
collect2.exe: ошибка: ld вернул 1 статус выхода
I Я искал ответы и знаю, что это что-то маленькое и тривиальное, но я действительно мог бы взглянуть на это второй парой ветеранов.
Большое спасибо, что посмотрели!
main.cpp
#include "raylib.h"
#include "SpriteAnimation.h"
int main() {
InitWindow(800, 600, "Sprite Animation Example");
SetTargetFPS(60);
SpriteAnimation animation("src/assets/player/char_a_p1/char_a_p1_0bas_demn_v01.png", 64, 64, 8, 8, 10.0f);
Vector2 position = {400, 300};
while (!WindowShouldClose()) {
// Update
float deltaTime = GetFrameTime();
animation.Update(deltaTime);
// Draw
BeginDrawing();
ClearBackground(RAYWHITE);
animation.Draw(position);
EndDrawing();
}
CloseWindow();
return 0;
}
SpriteAnimation.h
#include "raylib.h"
#include
class SpriteAnimation {
private:
Texture2D spriteSheet;
std::vector frames;
int currentFrame;
float frameTime;
float timer;
public:
SpriteAnimation(const char* filename, int frameWidth, int frameHeight, int framesPerRow, int framesPerColumn, float fps) {
spriteSheet = LoadTexture(filename);
currentFrame = 0;
frameTime = 1.0f / fps;
timer = 0.0f;
// Calculate and store all frame rectangles
for (int y = 0; y < framesPerColumn; y++) {
for (int x = 0; x < framesPerRow; x++) {
Rectangle frame = {
static_cast(x * frameWidth),
static_cast(y * frameHeight),
static_cast(frameWidth),
static_cast(frameHeight)
};
frames.push_back(frame);
}
}
}
~SpriteAnimation() {
UnloadTexture(spriteSheet);
}
void Update(float deltaTime) {
timer += deltaTime;
if (timer >= frameTime) {
currentFrame = (currentFrame + 1) % frames.size();
timer = 0.0f;
}
}
void Draw(Vector2 position, float scale = 1.0f, Color tint = WHITE) {
DrawTexturePro(
spriteSheet,
frames[currentFrame],
{position.x, position.y, frames[currentFrame].width * scale, frames[currentFrame].height * scale},
{0, 0},
0.0f,
tint
);
}
};
SpriteAnimation.h
#ifndef SPRITE_ANIMATION_H
#define SPRITE_ANIMATION_H
#include "raylib.h"
#include
class SpriteAnimation {
private:
Texture2D spriteSheet;
std::vector frames;
int currentFrame;
float frameTime;
float timer;
public:
SpriteAnimation(const char* filename, int frameWidth, int frameHeight, int framesPerRow, int framesPerColumn, float fps);
~SpriteAnimation();
void Update(float deltaTime);
void Draw(Vector2 position, float scale = 1.0f, Color tint = WHITE);
};
#endif // SPRITE_ANIMATION_H
Подробнее здесь: https://stackoverflow.com/questions/791 ... gs-in-my-c
Ошибки компоновщика C++. неопределенная ссылка на несколько разных вещей в моем классе ⇐ C++
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение