web-dev-qa-db-ja.com

エラーC1083:インクルードファイルを開けません: 'stdafx.h'

このプログラムをコンパイルしたとき(C++ Programming Language 4th editionから):

main.cpp

#include <stdafx.h>
#include <iostream>
#include <cmath>
#include "vector.h"
using namespace std;

double sqrt_sum(vector&);

int _tmain(int argc, _TCHAR* argv[])
{
    vector v(6);
    sqrt_sum(v);
    return 0;
}

double sqrt_sum(vector& v)
{
    double sum = 0;
    for (int i = 0; i != v.size(); ++i)
        sum += sqrt(v[i]);
    return sum;
}

vector.cpp

#include <stdafx.h>
#include "vector.h" 

vector::vector(int s)
:elem{ new double[s] }, sz{ s }
{
}
double& vector::operator[](int i)
{
    return elem[i];
}
int vector::size()
{
    return sz;
}

vector.h

#include <stdafx.h>
class vector{
public:
    vector(int s);
    double& operator[](int i);
    int size();
private:
    double* elem;
    int sz;
};

これらのエラーが発生しました:

errors

Microsoft Visual Studio 2013、Windows 7で実行します。修正方法を教えてください。

11
Kulis

「stdafx.h」、つまりプリコンパイル済みヘッダーとは何かを適切に理解する必要があります。他の質問やウィキペディアがそれに答えます。多くの場合、特にプロジェクトが小さく、依存関係が少ない場合は、プリコンパイル済みヘッダーを回避できます。あなたの場合、おそらくテンプレートプロジェクトから始めたように、Windows.hマクロにのみ_TCHARを含めるために使用されました。

次に、プリコンパイル済みヘッダーは通常、Visual Studioの世界ではプロジェクトごとのファイルです。したがって、

  1. プロジェクトにファイル「stdafx.h」があることを確認してください。削除しない場合(削除した場合など)、新しい一時プロジェクトを作成し、そこからデフォルトのプロジェクトをコピーします。
  2. #include <stdafx.h>#include "stdafx.h"に変更します。インクルードディレクトリで解決されるのではなく、プロジェクトのローカルファイルであることが想定されています。

第二に、ライブラリとしてコードを使用できる他のソースの名前空間が乱雑にならないように、プリコンパイル済みヘッダーを独自のヘッダーに含めることはお勧めできません。したがって、vector.hからの組み込みを完全に削除してください。

17
ceztko

Stdfaxの代わりにwindows.hを含めるか、テンプレートなしでクリーンなプロジェクトを作成します。

8
user3718058

それには2つの解決策があります。

ソリューション番号1:1。プロジェクトを再作成します。プロジェクトの作成中に、プリコンパイル済みヘッダーがチェックされていることを確認します(アプリケーション設定... ***空のプロジェクトはチェックしないでください)

ソリューション番号2:プロジェクトでstdafx.hおよびstdafx.cppを作成します2プロジェクトを右クリック->プロパティ-> C/C++->プリコンパイル済みヘッダー3.プリコンパイル済みヘッダーを選択して作成します(/ Yc)4.ソリューションを再構築します

問題が発生した場合は、メッセージを送ってください。

6
Dila Gurung

ソースファイルに#include "afxwin.h"を追加します。それはあなたの問題を解決します。

3
Dila Gurung

この問題を修正するには、「$(ProjectDir)」(またはstdafx.hがある場所)をProject-> Properties-> Configuration Properties-> C/C++-> General-> Additional Include Directoriesの下のディレクトリのリストに追加します。

1
Sar Jag