0

私はVC++6.0でいくつかのサンプルプログラムを実行しています。一部の単純なプログラムと小さなプログラムでは、プログラムごとに個別のプロジェクトを作成したくありません。1つのプロジェクトで2つのファイルが作成され、.hファイルがないため、.cppファイルを別の.cppファイルに含めました。私がその動作をコンパイルしたが、コードをビルドした場合、エラーが発生します。以下はコードです:

file1.cpp :
-----------

#include <iostream>
#include "Calculate_Int.cpp"
using namespace std;

int main ()
{
    cout << "\n\nFirst file \n" ;

    int x= cal_integer();

    return 0;

}


Calculate_Int.cpp:
------------------

#include<iostream>
using std::cout;
using std::endl;

int cal_integer(){
    cout<< 1+2<<endl;
    cout<<1-5<<endl;
    cout<<1-2<<endl;

        return 0;
}

このProject1.exeをビルドすると、次のエラーが発生します。

リンク中...Calculate_Int.obj:エラーLNK2005: "int __cdecl cal_integer(void)"(?cal_integer @@ YAHXZ)既にfile_1.objで定義されていますDebug / Project_1.exe:致命的なエラーLNK1169:1つ以上の複数定義されたシンボルが見つかりましたエラーlink.exeを実行しています。

Project_1.exe-2エラー、0警告

何が悪いのか教えてください。

4

1 に答える 1

0

ファイルを含めることは、ファイルを含めるポイントでそのファイルの内容をコピーすることと同じです。これは、のコンテンツがCalculate_Int.cppプロジェクトで2回コンパイルされることを意味します。そして、これはリンカーエラーがあなたに伝えていることです:それはどのバージョンを選ぶべきかを知りません。

コンパイルmain.cppするには、そこで使用している関数のシグネチャを知っている必要があります。つまり、定義ではなく、宣言だけが必要です。main.cppしたがって、この行を次のように置き換えることができます。

#include "Calculate_Int.cpp"

これとともに:

int cal_integer();

そして、プロジェクトは正常にコンパイルおよびリンクされます。とにかく、正しい方法は、Calculate_Int.hその行を含むファイルを作成し、必要な場所に含めることです。

于 2012-12-03T12:16:21.517 に答える