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 independiente project?
  • 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.

7 Comentarios

  1. 122

    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».

    • Yo estaba siguiendo el Tutorial: Creación y Uso de una Biblioteca de Enlace Dinámico (C++) y había leído mal «borrar el archivo de encabezado Precompilado casilla de verificación» «compruebe el archivo de encabezado Precompilado casilla de verificación»! El departamento de salud.
    • Pensé que era un ajuste para todo el proyecto y no se dio cuenta de que los archivos individuales pueden tener diferentes Encabezados Precompilados opciones. Esto funcionó, gracias!
    • Pero ¿alguien sabe por qué se produce el error, y por qué este error aparece cuando stdafx.h es en el hecho de ser incluido?
    • ya esta resuelto para mí, ya que tuve uno .cpp que estaba utilizando el archivo de encabezado precompilado y uno .c que no era.
    • La sugerencia de que evey único archivo puede tener su propio archivo de encabezado Precompilado es agradable. Sin embargo, esto es sólo una solución, en mi opinión.
  2. 11

    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:

    • En el panel Explorador de soluciones del proyecto, haga clic en el nombre del proyecto y, a continuación, haga clic en Properties.
    • En el panel izquierdo, haga clic en el C/C++ carpeta.
    • Haga clic en el Precompiled Headers nodo.
    • En el panel derecho, haga clic en Create/Use Precompiled Header y, a continuación, haga clic en Not Using Precompiled Headers.
  3. 10

    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).

    • Cuando me hicieron la PRIMERA línea me hizo incapaz de incluir «beecrypt/c++/seguridad/SecureRandom.h». Me dice que no existe el fichero o el directorio
    • Que es un tema aparte, sin embargo, que no se fija por la omisión de #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.
    • ¿Cómo puede ser que yo soy capaz de abrir («beecrypt/c++/seguridad/SecureRandom.h») archivo en mi main.cpp el archivo, pero no en SecureRandom.cxx?
  4. 6

    También tengo este error, pero para un .h archivo. La solución era entrar en el archivo Properties (a través de la Solución en el Explorador de archivos del menú emergente) y establecer el tipo de archivo correctamente. Fue creado para C/C++ Compiler en lugar de la correcta C/C++ header.

    • Yo tenía el mismo problema y su solución resuelto!, Yo creo que ocurre cuando se crea una .archivo cpp y, a continuación, cambie el nombre en un archivo de encabezado..
    • Gracias a los dos, chicos! No hay realmente este problema al crear una .cpp archivo por error y, a continuación, cambie el nombre a .h archivo.
  5. 5

    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 incluir stdafx.h en ese archivo.

  6. 4

    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.

  7. 1

    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.

Dejar respuesta

Please enter your comment!
Please enter your name here