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 \ document \ 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を含めることでした。機能した!

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 に答える