web-dev-qa-db-ja.com

インクルードファイルを開けません: 'stdio.h'-Visual Studio Community 2017-C ++ Error

Visual Studio Community 2017でソリューションをビルドしようとしていますが、「インクルードファイルを開けません: 'stdio.h'」というエラーが引き続き表示されます。同様の質問をいくつか読みましたが、まだこの問題を解決できません。 stdio.hファイルはstdafx.hで呼び出されるように見えますファイル。以下に詳細を示します。助言がありますか? (まだ画像を埋め込むことができませんので、スクリーンショットのリンクをクリックしてください。)

システムの詳細:Windows 10
Visual Studio Community 2017 v.15.2(26430.6)
-C++でインストールされたデスクトップ開発( スクリーンショット:インストールリスト


ステップ1:C++で有名なHello Worldプログラムを書きました。

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

int main()
{
    cout << "Hello World!" << endl;
    return 0;
}

ステップ2:Build> Build Solutionをクリックしました。

問題: 'stdio.h':そのようなファイルまたはディレクトリはありません。完全なエラー:

1>------ Build started: Project: HelloWorld, Configuration: Debug Win32 ------
1>stdafx.cpp
1>c:\users\dahiana mini\desktop\learncpp\helloworld\helloworld\stdafx.h(10): 
    fatal error C1083: Cannot open include file: 'stdio.h': No such file or directory
1>Done building project "HelloWorld.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

トラブルシューティングの詳細/試したこと:

  1. 構成プロパティ> VC++ディレクトリ
    Include Directories $(VC_IncludePath);$(WindowsSDK_IncludePath);
  2. スクリーンショット:ソリューションエクスプローラー(プロジェクト内のファイル)
  3. stdafx.cppファイルのコード:

    // stdafx.cpp : source file that includes just the standard includes  
    // HelloWorld.pch will be the pre-compiled header
    // stdafx.obj will contain the pre-compiled type information
    
    #include "stdafx.h"
    
    // TODO: reference any additional headers you need in STDAFX.H
    // and not in this file
    
  4. stdafx.hファイルのコード:

    // stdafx.h : include file for standard system include files,
    // or project specific include files that are used frequently, but
    // are changed infrequently
    
    #pragma once
    
    #include "targetver.h"
    #include <stdio.h>
    #include <tchar.h>
    

    注:#include<stdio.h><tchar.h>の両方の下に赤い波線があり、「ソースファイルを開けません」と表示されます。
    試行:最後の2行を削除しようとしましたが、さらにエラーが発生しました。

  5. 試した:多くの人がstdafx.hは必要ないと示唆したので、最初の行#include "stdafx.h"だけを削除しようとしました。しかし、これが機能するためには、もう少しやらなければなりませんでした。 以下の回答を参照してください。

39
dahiana

この問題を解決するには3つの方法があります。

  1. プリコンパイル済みヘッダーを無視#1
    手順:[プロジェクト]> [プロパティ]> [構成プロパティ]> [C/C++]> [コマンドライン]> [追加オプション]ボックスに/ Y-を追加します。 ( プロパティページのスクリーンショット )> Ok>削除#include "stdafx.h"
  2. プリコンパイル済みヘッダーを無視する#2
    手順:ファイル>新規>プロジェクト> ...>アプリケーションでWizardウィンドウで[次へ]> [オフ]をクリックしますプリコンパイル済みヘッダーボックス>完了>削除#include "stdafx.h"
  3. Visual Studioを再インストールします
    Windows SDKに何か問題がある可能性があることに気付いたので、これもうまくいきました。 Windows 10を使用していましたが、Windows SDK 8.1を使用していました。この問題も発生する可能性があります。
    手順:Visual Studio Installerを開く> 3行のメニューバーをクリックする> [アンインストール]>コンピューターを再起動する> Visual Studio Installerを開く>必要なものをインストールしますが、複数のバージョンや8.1ではなく、最新のWindows SDK 10のみをインストールしてください。

    Visual Studioを初めてインストールしたときに、Windows SDK 8.1をインストールする必要があることを示すエラーが表示されました。そのため、Visual Studio Installerの[変更]オプションを使用しました。おそらくこれは、Visual Studioを既にインストールした後にインストールしたか、代わりにSDK 10が必要だったために問題だったのでしょう。念のため、完全な再インストールを行いました。

8
dahiana

VS2013からVS2017へのプロジェクトの移植で同じ問題が発生しました。
修正:「プロパティ->一般-> Windows SDKバージョン」を10に変更

83

新しいコンピューターにVS2017コミュニティをインストールし、VS2013からVS2017にソリューションを移行した後、stdlib.hおよびstdio.h(およびそれ以上)が見つからないという問題に直面しました。

@ Maxim Akristiniy の提案を使用しましたが、ツールセットの互換性に関するエラーメッセージが表示されました。ただし、VS自体は、Solution Explorerでソリューションを右クリックして、メニューからRetarget solutionを選択し、更新されたWindows SDK Versionドロップダウンリストから。

現在、私のプロジェクトは問題なくビルドされています。

リターゲティングをキャッチするには、プロジェクトをスタートアッププロジェクトにする必要がある場合があることに注意してください。

15
ysap

CUDAの場合:

プロジェクトを右クリックします。

Properties-> CUDAに移動し、「CUDA Toolkit Custom Dir」を設定しますCUDAツールキットディレクトリに移動します。

私のものは:C:\\ Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.0

enter image description here

4
Sapnesh Naik

Windows SDKをWindows 10に上げたくない場合(たとえば、意思決定があなたのものではないオープンソースプロジェクトで作業している場合など)、Windows SDK 8.1プロジェクトでこの問題を解決できます。 Tools -> Get Tools and Features... -> Individual Compontents tabをナビゲートし、個々のコンポーネント「Windows 8.1 SDK」(SDK、ライブラリおよびフレームワークの下)および「Windows Universal CRT SDK」(コンパイラ、ビルドツールおよびランタイムの下)をインストールします。

3
Hemaolle

VS2017を更新した後、同様の問題が発生しました。プロジェクトは正常に構築されました。しかし、エディターでコードが呼び出されたときに多くの「エラー」が発生しました。 VSの再インストールも試みました。 [標準のインクルードパスを無視する]オプションを[はい]に設定することで解決できました。多くのエラーでソリューションを構築しようとしました。戻ってオプションを「いいえ」に設定しました。再構築後、私の問題はなくなりました。

1
David Goeken

汚い修正:追加$(VC_IncludePath); $(WindowsSDK_IncludePath);プロジェクトのプロパティへ/ C/C++ /一般/追加のインクルードディレクトリ

1
Andy Lucny

シナリオ:

  1. Windows 1 with Visual Studio 2017(フレッシュインストール)。

  2. 'C' projectERROR like-> オープンソースは不可file: 'stdio.h'、 'windows.h'など)。

解決:

  1. Visual Studio Installer」を実行します。

  2. 「変更」ボタンをクリックします。

  3. C++によるデスクトップ開発」を選択します。

  4. 「インストールの詳細」(通常は右側のサイドバー)から次を選択します。

    4.1。 Windows 10 SDK(10.0.17134.0)

    • 4.1のSDKのバージョン。単なる例です。
  5. 「変更」ボタンをクリックして、変更を適用します。

  6. [SomeProject]-> [プロパティ]を右クリックします。
  7. 「構成:」->「すべての構成」および「プラットフォーム:」->「すべてのプラットフォーム」。
  8. '構成プロパティ'-> '全般'-> 'Windows SDKバージョン':
    • 変更(コンボボックスから選択)SDKバージョンを現在インストール済み;
  9. 「適用」ボタンをクリックして、変更を適用します。
1
Ted

同じ問題に直面して、別の解決策はデフォルトのインクルードを追加することです、これは私のために問題を修正しました:

$(IncludePath);
1
GameDeveloper

私にとっては同様の問題ですが、少し異なります。デフォルトのCUDA 10コードをコンパイルして問題なく実行できますが、編集ウィンドウに表示されるstdio.hファイルに関連する多くのエラーがあります。迷惑です。コードファイル名を「kernel.cu」から「kernel.cpp」に変更して解決します。それは有線ですが、私のために動作します。そして、これまでのところうまくいきます。

0
rml