2012-04-13 2 views
2

誰か助けてくれますか? Visual Studio 2010を使用しています このメッセージが表示されていますが、これを解決する方法がわかりません。LNK2019:未解決の外部シンボルですが、私は関数をコード化しました

1>コードの生成...

1> dct.obj:エラーLNK2019:未解決の外部シンボル「パブリック: __thiscall Amostras :: Amostras(クラスのstd ::のbasic_string、クラスのstd ::アロケータ>) " (0)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未解決 外部

ここ* .cppファイルの一部です:私は、* .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; 
} 

はそれが役に立てば幸いれ

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の中でクラスを入れ、その後にのみ、そのクラスのメソッドと機能を持っている*クラスの.h * .cppファイルを含めたなかったものを。出来た!

+0

templatypypedefの回答を参照してください。より具体的な回答が必要な場合は、コードを投稿してください。その間に、LNK2019の詳細についてこれを読むことができます:http://msdn.microsoft.com/en-us/library/799kze2z(v=vs.80).aspx – JBentley

答えて

1

このリンカーエラーは、通常、関数のプロトタイプを作成したものの、定義するのを忘れたことを意味します。あなたが機能

Amostras::Amostras(string arg); 
どこか

、およびその実装を含むオブジェクトファイルがリンクしていることをあなたのコードをリンクされたときのことを実施していることを確認します。

・ホープこのことができます!あなたの* .hファイルで宣言したもののAmostras::Amostras(string arg); を定義するのを忘れ

+0

これはAmostrasのクラスのコンストラクタです。そしてそれは助けにはなりませんでした。 –

0

Amostras::Amostras(string arg) 
{ 
} 

はあなたにもこれを行うことができます

OR

あなた*の.cppファイルに上記のコードをコピーあなたの* .hファイルからの行をコメントすることによって。

//Amostras::Amostras(string arg); 

whoa!あなたは* .hファイルを持っていますか?あなたが* .cppだけで働いているなら、あなたは知っています。

+0

私は、* .cppファイルのすべてのプロトタイプを* .hファイルに持っています。 –

+0

よろしくお願いします。インラインコンストラクタを使用していない場合は、インラインコンストラクタを作成してみてください。 –

+0

これはうまくいきませんでした。すべてのクラスが* .cppで定義されています。すべてのコンストラクター(2)、変数、およびただ1つの関数があります。私の* .hには、コンストラクタ、変数、関数のプロトタイプもあります。私は他のファイルに* .hを含めています。 –