c++ - 错误 :"error LNK2019: unresolved external symbol"

标签 c++

我目前在编译代码时遇到以下错误:

1>Mapa.obj : error LNK2019: unresolved external symbol "public: void __thiscall Mapa::Collision(float,float,float,float,int,int,int,int)" (?Collision@Mapa@@QAEXMMMMHHHH@Z) referenced in function "public: void __thiscall Mapa::mapa1(float,float,int,struct ALLEGRO_BITMAP *,struct ALLEGRO_BITMAP *,int)" (?mapa1@Mapa@@QAEXMMHPAUALLEGRO_BITMAP@@0H@Z)

头文件

    class Mapa
{
public:
    Mapa(void);
    ~Mapa(void);
    void Mapa::mapa1(float xp, float yp,int dir,ALLEGRO_BITMAP *party, ALLEGRO_BITMAP *mapa1,int moveSpeed);
    void Mapa::Collision(float xp,float yp,float ex,float ey,int width,int height,int dir,int moveSpeed);
    //const float moveSpeed;
};

这里是函数

    Mapa::Mapa(void)
{
}

Mapa::~Mapa(void)
{
}
enum Direction { DOWN, LEFT, RIGHT, UP };
int dir = DOWN; 
void Collision(float xp,float yp,float ex,float ey,int width,int height,int dir,int moveSpeed)
{
    if( xp + width < ex || xp> ex+ width || yp+ height <ey || yp > ey +height)
    {
    }
    else 
    {
            {
           if(dir==0)
         yp-=moveSpeed;
     else if(dir==1)
         xp+=moveSpeed;
     else if(dir==2)
         xp-=moveSpeed;
     else if(dir==3)
         yp+=moveSpeed;
    }
    }
}
void Mapa::mapa1(float xp, float yp,int dir,ALLEGRO_BITMAP *party,ALLEGRO_BITMAP *mapa1,int moveSpeed)
{

bool draw=true;
bool done=false;
bool active=false;
int sourceX,sourceY;
const float FPS = 60.0;
sourceX=0;
sourceY=0;
ALLEGRO_TIMER *timer = al_create_timer(1.0 / FPS);
ALLEGRO_KEYBOARD_STATE StatusKlawiatury1 ; // klawiatura
ALLEGRO_EVENT_QUEUE *event_queue = al_create_event_queue();
al_register_event_source(event_queue, al_get_keyboard_event_source());
al_register_event_source(event_queue, al_get_timer_event_source(timer));
    al_draw_bitmap(mapa1,0,0,0);
   al_start_timer(timer);
     while(!done)
    {
    ALLEGRO_EVENT events;
    al_wait_for_event(event_queue, &events);
    if(events.type == ALLEGRO_EVENT_KEY_UP)
        {
            switch(events.keyboard.keycode)
            {
            case ALLEGRO_KEY_ESCAPE:
                done = true;
            }
        }


    else if(events.type == ALLEGRO_EVENT_TIMER)
        {
            active=true;
            al_get_keyboard_state(&StatusKlawiatury1);
            if(al_key_down(&StatusKlawiatury1, ALLEGRO_KEY_DOWN))
            {
                yp += moveSpeed;
                dir= DOWN;
            }
            else if(al_key_down(&StatusKlawiatury1, ALLEGRO_KEY_UP))
            {             
                yp -= moveSpeed;
                dir = UP;
            }
            else if(al_key_down(&StatusKlawiatury1, ALLEGRO_KEY_RIGHT))
            {     
                xp += moveSpeed;
                dir= RIGHT;
            }
            else if(al_key_down(&StatusKlawiatury1, ALLEGRO_KEY_LEFT))
            {             
                xp -= moveSpeed;
                dir = LEFT;
            }
            else
                active = false;
            Collision(xp,yp,0,426,627,61,dir,moveSpeed);
            Collision(xp,yp,700,273,647,53,dir,moveSpeed);
            Collision(xp,yp,0,128,695,58,dir,moveSpeed);
            Collision(xp,yp,0,0,351,20,dir,moveSpeed);
            Collision(xp,yp,770,0,351,20,dir,moveSpeed);
            Collision(xp,yp,0,0,0,600,dir,moveSpeed);
            Collision(xp,yp,800,0,10,600,dir,moveSpeed);
            Collision(xp,yp,0,595,800,10,dir,moveSpeed);
            if(active)
                sourceX+=al_get_bitmap_width(party)/2;
            else
                sourceX=20;
            if(sourceX >=al_get_bitmap_width(party))
               sourceX=0;

                draw = true;
        }

        if(draw)
        {

            draw=false;
    al_convert_mask_to_alpha(party, al_map_rgb(255,0,255));
    al_draw_bitmap_region(party,sourceX,dir*al_get_bitmap_height(party)/4,20,20,xp,yp,NULL);
    al_flip_display();
    al_draw_bitmap(mapa1,0,0,0);

        }
    }
}

我花了几个小时寻找解决方案。当我在 main 中执行它们时,这两个函数都没有问题,但是当我将它们移动到单独的类时,它开始显示错误。我们将不胜感激。

最佳答案

函数定义中缺少类限定符 Mapa::

void Maoa::Collision(float xp,float yp,float ex,float ey,int width,int height,int dir,int moveSpeed)

关于c++ - 错误 :"error LNK2019: unresolved external symbol",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21365137/

相关文章:

c++ - 使用linux从串口输出PWM信号

c++ - 如何在 C++ 中的 boost::future 中添加回调

c++ - 从多个文件中读取文本 C++

c++ - 如何在键是自定义对象的情况下使用 stdext::hash_map?

c++ - 如何通过继承专门化复杂模板 - C++

c++ - 没有 Boost 的 BOOST_FOREACH?

C++ 理解 RVO(与返回局部变量引用相比)

c++ - MPI C++ 矩阵加法、函数参数和函数返回

c++ - 使用多线程处理和保存图像

c++ - 在预分配内存中创建对象