LNK2019未解决的外部符号错误

时间:2014-03-01 12:08:57

标签: c++ lnk2019 unresolved-external

当我尝试编译VS2012项目时出现以下错误:

错误LNK2019:未解析的外部符号“public:int __thiscall map :: GetBlockRef(int,int)”(?GetBlockRef @ map @@ QAEHHH @ Z)在函数“public:void __thiscall map :: LoadLevel(int)”中引用“(?LoadLevel @ map @@ QAEXH @ Z)

错误LNK1120:1个未解析的外部

我已经检查了各种类似问题的网站但找不到任何网站。问题是在 void map :: LoadLevel(int)中调用 int map :: GetBlockRef(int,int)

为什么我不能调用GetBlockRef()?

map.h

#ifndef MAP_H
#define MAP_H

#include <windows.h>
#include <vector>
#include "Block.h"

using namespace std;

class map
{
    public:
        map();
        int GetGridCoord(int);
        int GetBlockRef(int, int); //Declared correctly
        void LoadLevel(int);

        vector<block>blocks;
        vector<int>blockRef;
};

#endif

map.cpp

#include "Map.h"

map::map()
{
    for(int i = 0; i < 196; i++)
    {
        blockRef.push_back(-1);
    }
}

int GetGridCoord(int v)
{
    return (v / 48) - 1;
}

int GetBlockRef(int x, int y) //Defined correctly
{
    x = GetGridCoord(x);
    y = GetGridCoord(y);

    int index = x + (14 * y);

    return index;
}

void map::LoadLevel(int level)
{
    int index;
    block tmpBlock;

    tmpBlock.InitBlockData(144, 144, "rock");
    index = GetBlockRef(tmpBlock.xPos, tmpBlock.yPos);  //THIS IS CAUSING ERRORS!!
    blockRef[index] = 0;
    blocks.push_back(tmpBlock);
}

1 个答案:

答案 0 :(得分:5)

//Defined correctly不是真的。

int GetBlockRef(int x, int y)与...不一样 int map::GetBlockRef(int x, int y)