あなたが私を助けてくれることを願っています、何が起こっているのかわからないからです。プロジェクトに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
コードが多すぎてすみません。
SolutionExplorerに移動します(メニューを使用しない場合は、すでに表示されているはずです:[表示]-> [SolutionExplorer])。
ソリューションツリーで.cxxファイルを見つけて右クリックし、ポップアップメニューから[プロパティ]を選択します。ファイルのプロパティを含むウィンドウが表示されます。
左側のツリーを使用して、「C++ /プリコンパイル済みヘッダー」セクションに移動します。ウィンドウの右側に、3つのプロパティが表示されます。 「プリコンパイル済みヘッダーの作成/使用」という名前のプロパティを「プリコンパイル済みヘッダーを使用しない」の値に設定します。
プロジェクトでプリコンパイル済みヘッダーを使用しない場合は、ソースファイルの[プリコンパイル済みヘッダーの作成/使用]プロパティを[プリコンパイル済みヘッダーを使用しない]に設定します。このコンパイラオプションを設定するには、次の手順を実行します。
Properties
]をクリックします。C/C++
フォルダーをクリックします。Precompiled Headers
ノードをクリックします。Create/Use Precompiled Header
]をクリックし、[Not Using Precompiled Headers
]をクリックします。ソースにstdafx.h
を含めることを忘れていました(コードが見えないため)。しなかった場合は、#include "stdafx.h"
が.cpp
ファイルのfirst行であることを確認してください。そうでない場合は、"stdafx.h"
ソースファイル内(ただし、ファイルのまさにbeginningにはありません)。
私もこのエラーを受け取りましたが、.h
ファイルの場合です。修正は、ファイルProperties
に移動し(ソリューションエクスプローラーのファイルポップアップメニューを使用)、ファイルタイプを正しく設定することでした。正しいC/C++ Compiler
ではなくC/C++ header
に設定されました。
この線 #include "stdafx.h"
must各ソースファイルの先頭の最初の行で、他のヘッダーファイルが含まれる前。
表示されているのが.cxx
ファイル、それからdidを含めることを忘れるstdafx.h
そのファイル。
新しいWin32コンソールアプリケーションに名前を付けた後、ウィザードの追加オプションからプリコンパイル済みヘッダーのチェックを外すのを忘れたときに、このエラーが発生しました。
Stdafx.hライブラリは必要ないので、Projectメニューに移動して削除し、(Propertiesまたは[プロジェクトの名前] Properties)をクリックしますまたは単にAlt + F7を押します。設定の横のドロップダウンリストで、すべての設定を選択します。その下にはツリーノードがあり、構成プロパティをクリックしてからC/C++をクリックします。右側のペインで、「プリコンパイル済みヘッダーを作成/使用」を選択し、「プリコンパイル済みヘッダーを使用しない」を選択します。
C++プロジェクトのプラットフォームを「Win32」ではなく「x64」(またはターゲットとするプラットフォーム)に変更します。これは、Visual Studioの[ビルド]-> [構成マネージャー]にあります。リストでプロジェクトを見つけ、[プラットフォーム]列を変更します。すべてのソリューション構成でこれを行うことを忘れないでください。