2

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

1> 生成代码...

1>dct.obj : 错误 LNK2019: 无法解析的外部符号“public: __thiscall Amostras::Amostras(class std::basic_string,class std::allocator >)” (??0Amostras@@QAE@V?$basic_string@DU? $char_traits@D@std@@V?$allocator@D@2@@std@@@Z) 在函数_main中引用

1>C:\Users\redneck\documents\visual studio 2010\Projects\dct\Debug\dct.exe : 致命错误 LNK1120: 1 unresolved externals

这是一些 *.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 中,然后将 *.h 包含在仅具有该类的方法和功能的类 *.cpp 中。有效!

4

2 回答 2

1

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

Amostras::Amostras(string arg);

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

希望这可以帮助!

于 2012-04-13T18:36:39.757 回答
0

您忘记定义Amostras::Amostras(string arg); 在 *.h 文件中声明的尽管

Amostras::Amostras(string arg)
{
}

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

或者

您也可以通过注释 *.h 文件中的行来做到这一点。

//Amostras::Amostras(string arg);

哇!你有 *.h 文件吗?如果您只在 *.cpp 中工作,那么请让我知道。

于 2012-04-13T18:45:15.730 回答