LNK2019:未解析的外部符号,但我编写了该函数

时间:2012-04-13 18:33:45

标签: c++ lnk2019

有人可以帮我这个吗?我正在使用Visual Studio 2010 我收到了这条消息,我不知道如何解决这个问题。

  

1>生成代码......

     

1> dct.obj:错误LNK2019:未解析的外部符号“public:   __thiscall Amostras :: Amostras(类std :: basic_string,类std :: allocator>)“   (?? 0Amostras @@ @ QAE V'$ basic_string的@ DU?$ char_traits @ d @ @@ STD V'$分配器@ d @ @@ 2 STD @@@ Z)   在函数_main

中引用      

1> C:\ Users \ redneck \ documents \ visual studio   2010 \ Projects \ dct \ Debug \ dct.exe:致命错误LNK1120:1未解决   的外部

以下是一些* .cpp文件:

class Amostras {
public:
    int original[10][257];
    int idct[10][257];
    float dct[10][257];
    int grupos;

Amostras::Amostras(void)
    {
    for (int i=0;i<10;i++)
    {
        this->original[i][0]=0; 
        this->dct[i][0]=0.0;
        this->idct[i][0]=0;
        }
        this->grupos=0;
    }

Amostras::Amostras(string arquivo)
{
    int n_samples=0,linha=0,coluna=0;
    int cont;
..

这是* .h

class Amostras {
public:
    int original[10][257];
    int idct[10][257];
    float dct[10][257];
    int grupos;

    Amostras::Amostras();
    Amostras::Amostras(string arquivo);
    void Amostras::mostra(void);
};

int main(void)
{
    Amostras *amostra = new Amostras("in.txt");
    dct(amostra,0);
    show(amostra,0);
    amostra->mostra();
    return 0;
}

希望它有所帮助,我在这里没有选择:(


解决方案:

所以我所做的只是将类放在* .h中,然后在类* .cpp中包含* .h,它只包含该类的方法和函数。它奏效了!

2 个答案:

答案 0 :(得分:1)

此链接器错误通常意味着您已对函数进行了原型设计,但忘记了定义它。确保您已实现该功能

Amostras::Amostras(string arg);

某处,当您链接代码时,包含该实现的目标文件已被链接。

希望这有帮助!

答案 1 :(得分:0)

你忘了定义Amostras::Amostras(string arg); 虽然在* .h文件中声明

Amostras::Amostras(string arg)
{
}

复制* .cpp文件中的上述代码

OR

您也可以通过评论* .h文件中的行来完成此操作。

//Amostras::Amostras(string arg);

哇!你有* .h文件吗?如果你只在* .cpp工作,那么就知道了。