web-dev-qa-db-ja.com

予期しないファイル終了エラー

あなたが私を助けてくれることを願っています、何が起こっているのかわからないからです。プロジェクトにBeecryptライブラリを追加しようとすると、次のエラーが発生します。

致命的なエラーC1010:プリコンパイル済みヘッダーの検索中に予期しないファイルの終わり。ソースに「#include "stdafx.h"」を追加するのを忘れましたか?

実際、ソースに#include "stdafx"を追加することを忘れませんでした。コンパイラは、この.cxxファイルの最後にエラーがあることを示します。

#define BEECRYPT_CXX_DLL_EXPORT

#ifdef HAVE_CONFIG_H
# include "config.h"
#endif

#include "beecrypt/c++/security/SecureRandom.h"
#include "beecrypt/c++/security/SecureRandomSpi.h"
#include "beecrypt/c++/security/Security.h"

using namespace beecrypt::security;

SecureRandom* SecureRandom::getInstance(const String& algorithm) throw       (NoSuchAlgorithmException)
 {
Security::spi* tmp = Security::getSpi(algorithm, "SecureRandom");

assert(dynamic_cast<SecureRandomSpi*>(tmp->cspi));

SecureRandom* result = new SecureRandom(reinterpret_cast<SecureRandomSpi*>(tmp->cspi), tmp->prov, tmp->name);

delete tmp;

return result;
}

 SecureRandom* SecureRandom::getInstance(const String& type, const String& provider) throw (NoSuchAlgorithmException, NoSuchProviderException)
  {
Security::spi* tmp = Security::getSpi(type, "SecureRandom", provider);

assert(dynamic_cast<SecureRandomSpi*>(tmp->cspi));

SecureRandom* result = new SecureRandom(reinterpret_cast<SecureRandomSpi*>(tmp->cspi), tmp->prov, tmp->name);

delete tmp;

return result;
    }

   SecureRandom* SecureRandom::getInstance(const String& type, const Provider& provider) throw (NoSuchAlgorithmException)
   {
Security::spi* tmp = Security::getSpi(type, "SecureRandom", provider);

assert(dynamic_cast<SecureRandomSpi*>(tmp->cspi));

SecureRandom* result = new SecureRandom(reinterpret_cast<SecureRandomSpi*>(tmp->cspi), tmp->prov, tmp->name);

delete tmp;

return result;
     }

  void SecureRandom::getSeed(byte* data, int size)
 {
entropyGatherNext(data, size);
 }

 SecureRandom::SecureRandom()
 {
Security::spi* tmp = Security::getFirstSpi("SecureRandom");

assert(dynamic_cast<SecureRandomSpi*>((SecureRandomSpi*) tmp->cspi));

_rspi = (SecureRandomSpi*) tmp->cspi;
_type = tmp->name;
_prov = tmp->prov;

delete tmp;
   }

  SecureRandom::SecureRandom(SecureRandomSpi* rspi, const Provider* provider, const String& type)
  {
_rspi = rspi;
_prov = provider;
_type = type;
  }

 SecureRandom::~SecureRandom()
 {
delete _rspi;
 }

void SecureRandom::generateSeed(byte* data, int size)
 {
_rspi->engineGenerateSeed(data, size);
 }

 void SecureRandom::setSeed(const byte* data, int size)
 {
_rspi->engineSetSeed(data, size);
 }

  void SecureRandom::nextBytes(byte* data, int size)
 {
_rspi->engineNextBytes(data, size);
 }

 const String& SecureRandom::getType() const throw ()
 {
return _type;
 }

  const Provider& SecureRandom::getProvider() const throw ()
 {
return *_prov;
  }

ここにhファイルがあります:

#ifndef _CLASS_BEE_SECURITY_SECURERANDOM_H
#define _CLASS_BEE_SECURITY_SECURERANDOM_H

#include "beecrypt/beecrypt.h"

#ifdef __cplusplus

#include "beecrypt/c++/security/SecureRandomSpi.h"
using beecrypt::security::SecureRandomSpi;
#include "beecrypt/c++/security/Provider.h"
using beecrypt::security::Provider;
#include "beecrypt/c++/security/NoSuchAlgorithmException.h"
using beecrypt::security::NoSuchAlgorithmException;
#include "beecrypt/c++/security/NoSuchProviderException.h"
using beecrypt::security::NoSuchProviderException;

 namespace beecrypt {
namespace security {
    /*!\ingroup CXX_SECURITY_m
     */
    class BEECRYPTCXXAPI SecureRandom : public Object
    {
    public:
        static SecureRandom* getInstance(const String& type)    throw (NoSuchAlgorithmException);
        static SecureRandom* getInstance(const String& type,    const String& provider) throw (NoSuchAlgorithmException, NoSuchProviderException);
        static SecureRandom* getInstance(const String& type,   const Provider& provider) throw (NoSuchAlgorithmException);

        static void getSeed(byte*, int);

    private:
        SecureRandomSpi* _rspi;
        const Provider*  _prov;
        String           _type;

    protected:
        SecureRandom(SecureRandomSpi* spi, const Provider*   provider, const String& type);

    public:
        SecureRandom();
        virtual ~SecureRandom();

        void generateSeed(byte*, int);
        void nextBytes(byte*, int);
        void setSeed(const byte*, int);

        const String& getType() const throw ();
        const Provider& getProvider() const throw ();
    };
}
   }

   #endif

   #endif

コードが多すぎてすみません。

51

SolutionExplorerに移動します(メニューを使用しない場合は、すでに表示されているはずです:[表示]-> [SolutionExplorer])。

ソリューションツリーで.cxxファイルを見つけて右クリックし、ポップアップメニューから[プロパティ]を選択します。ファイルのプロパティを含むウィンドウが表示されます。

左側のツリーを使用して、「C++ /プリコンパイル済みヘッダー」セクションに移動します。ウィンドウの右側に、3つのプロパティが表示されます。 「プリコンパイル済みヘッダーの作成/使用」という名前のプロパティを「プリコンパイル済みヘッダーを使用しない」の値に設定します。

123
Wacek

プロジェクトでプリコンパイル済みヘッダーを使用しない場合は、ソースファイルの[プリコンパイル済みヘッダーの作成/使用]プロパティを[プリコンパイル済みヘッダーを使用しない]に設定します。このコンパイラオプションを設定するには、次の手順を実行します。

  • プロジェクトのソリューションエクスプローラーペインで、プロジェクト名を右クリックし、[Properties]をクリックします。
  • 左ペインで、C/C++フォルダーをクリックします。
  • Precompiled Headersノードをクリックします。
  • 右側のペインで、[Create/Use Precompiled Header]をクリックし、[Not Using Precompiled Headers]をクリックします。
11
Maheswar Reddy

ソースにstdafx.hを含めることを忘れていました(コードが見えないため)。しなかった場合は、#include "stdafx.h".cppファイルのfirst行であることを確認してください。そうでない場合は、"stdafx.h"ソースファイル内(ただし、ファイルのまさにbeginningにはありません)。

10
Nawaz

私もこのエラーを受け取りましたが、.hファイルの場合です。修正は、ファイルPropertiesに移動し(ソリューションエクスプローラーのファイルポップアップメニューを使用)、ファイルタイプを正しく設定することでした。正しいC/C++ CompilerではなくC/C++ headerに設定されました。

6
jnnnnn

この線 #include "stdafx.h"must各ソースファイルの先頭の最初の行で、他のヘッダーファイルが含まれる前。

表示されているのが.cxxファイル、それからdidを含めることを忘れるstdafx.hそのファイル。

5
Cody Gray

新しいWin32コンソールアプリケーションに名前を付けた後、ウィザードの追加オプションからプリコンパイル済みヘッダーのチェックを外すのを忘れたときに、このエラーが発生しました。

Stdafx.hライブラリは必要ないので、Projectメニューに移動して削除し、(Propertiesまたは[プロジェクトの名前] Properties)をクリックしますまたは単にAlt + F7を押します。設定の横のドロップダウンリストで、すべての設定を選択します。その下にはツリーノードがあり、構成プロパティをクリックしてからC/C++をクリックします。右側のペインで、「プリコンパイル済みヘッダーを作成/使用」を選択し、「プリコンパイル済みヘッダーを使用しない」を選択します。

4
MiddleKay

C++プロジェクトのプラットフォームを「Win32」ではなく「x64」(またはターゲットとするプラットフォーム)に変更します。これは、Visual Studioの[ビルド]-> [構成マネージャー]にあります。リストでプロジェクトを見つけ、[プラットフォーム]列を変更します。すべてのソリューション構成でこれを行うことを忘れないでください。

1
JordanBean