Espero que usted me puede ayudar, porque yo no tengo idea acerca de lo que está pasando. Estoy teniendo el siguiente error al intentar agregar Beecrypt la biblioteca de mi proyecto:
error fatal C1010: final inesperado del archivo, mientras que busca encabezado precompilado. ¿Te olvides de añadir » #include «stdafx.h»‘ a tu fuente?
Yo en realidad no te olvides de añadir #include «stdafx» a mi fuente. El compilador señala el error de ser al final de este .cxx archivo:
#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;
}
y aquí es h archivo:
#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
Lo siento por tanto código.
- Está tratando de agregar Beecrypt de la biblioteca para su
solution
como independienteproject
? - Puede ser, no sé qué es exactamente lo que significa.
- Pero si usted tiene la experiencia de éxito de la adición de Beecrypt a una solución, necesito desesperadamente tu consejo. Si usted habla ruso (supongo que por tu nombre )- tal vez sería más conveniente el uso de los rusos?
- Yo no tengo esa experiencia y yo no uso VS más. Pero recuerdo que hay algún tipo de configuración para activar esta encabezados precompilados característica para un proyecto independiente.
- no entiendo lo que es que
- Sí, usted puede dar vuelta encabezados precompilados y fuera de su ventana de Propiedades.
Goto SolutionExplorer (debe ser que ya es visible, si no utilizar el menú: Ver->SolutionExplorer).
Encontrar su .cxx archivo en el árbol de la solución, haga clic derecho sobre él y seleccione «Propiedades» en el menú emergente. Obtendrá una ventana con el archivo de propiedades.
El uso de árbol en el lado izquierdo de ir a la «C++/Encabezados Precompilados» sección. En el lado derecho de la ventana obtendrá tres propiedades. Establecer propiedad denominada «Crear/Usar de Encabezado Precompilado» para el valor de «No Utilizar Encabezados Precompilados».
Si usted no utiliza los encabezados precompilados en su proyecto, establecer el Crear/Usar de Encabezado Precompilado de la propiedad de los archivos de origen para No Utilizar Encabezados Precompilados. Para establecer esta opción del compilador, siga estos pasos:
Properties
.C/C++
carpeta.Precompiled Headers
nodo.Create/Use Precompiled Header
y, a continuación, haga clic enNot Using Precompiled Headers
.Usted se olvidó de incluir
stdafx.h
en su origen (ya que no puedo ver el código). Si no, a continuación, asegúrese de#include "stdafx.h"
es el primera línea en su.cpp
archivo, de lo contrario se verá el mismo error, incluso si has incluido"stdafx.h"
en el archivo de origen (pero no en el muy principio del archivo).#include <stdafx.h>
! El compilador no hacer nada con su código hasta que se ha encontrado este encabezado. No ir en busca de su cabecera. Si usted no desea incluir<stdafx.h>
, es necesario desactivar los encabezados precompilados.También tengo este error, pero para un
.h
archivo. La solución era entrar en el archivoProperties
(a través de la Solución en el Explorador de archivos del menú emergente) y establecer el tipo de archivo correctamente. Fue creado paraC/C++ Compiler
en lugar de la correctaC/C++ header
.La línea
#include "stdafx.h"
debe ser la primera línea en la parte superior de cada archivo de código fuente, antes de cualquier otro archivo de encabezado se incluyen.Si lo que se muestra es la de toda la
.cxx
archivo, entonces usted hizo olvides incluirstdafx.h
en ese archivo.Me encontré con que un error cuando me olvidó desactivar el encabezado Precompilado de las opciones adicionales en el asistente después de que el nombre de una nueva aplicación de consola Win32.
Porque no necesito stdafx.h biblioteca, me lo quitaron por que va a Proyecto menú, a continuación, haga clic en Propiedades o [nombre del proyecto] Propiedades o simplemente pulse Alt + F7. En el dropdownlist junto a configuración, seleccione Todas las Configuraciones. Debajo de eso, es un nodo de árbol, haga clic en Propiedades de Configuración de, entonces C/C++. En el panel derecho, seleccione Crear/Usar de Encabezado Precompilado, y elegir No uso de Encabezado Precompilado.
Cambiar la Plataforma de su proyecto de C++ a «x 64» (o cualquiera que sea la plataforma de destino) en lugar de «Win32». Esto se puede encontrar en Visual Studio en Build -> Administrador de Configuración. Encuentre su proyecto en la lista y cambiar la Plataforma de la columna. No olvides hacer esto para todas las configuraciones de la solución.