estoy creando una DLL utilizando Visual C++ Express, y cuando se declara extern ValveInterfaces* VIFace
dentro Required.h
, el compilador me dice que ValveInterfaces
no está definido. (Quiero exponer VIFace
a cualquier archivo que incluye Required.h
)palabra clave extern "especificador de tipo que falta"
Aquí está la estructura de mis archivos:
DLLMain.cpp
#include "Required.h" //required header files, such as Windows.h and the SDK
ValveInterfaces* VIFace;
//the rest of the file
Required.h
#pragma once
//include Windows.h, and the SDK
#include "ValveInterfaces.h"
extern ValveInterfaces* VIFace; //this line errors
ValveInterfaces.h
#pragma once
#ifndef _VALVEINTERFACES_H_
#define _VALVEINTERFACES_H_
#include "Required.h"
class ValveInterfaces
{
public:
ValveInterfaces(void);
~ValveInterfaces(void);
static CreateInterfaceFn CaptureFactory(char *pszFactoryModule);
static void* CaptureInterface(CreateInterfaceFn fn, char * pszInterfaceName);
//globals
IBaseClientDLL* gClient;
IVEngineClient* gEngine;
};
#endif
Captura de pantalla de errores: http://i.imgur.com/lZBuB.png
No debe usar nombres reservados para incluir guardias. Aunque no es la causa de su problema en particular (que se debe a la inclusión circular de 'ValveInterfaces.h' y' Required.h'), puede causar [problemas similares] (http://stackoverflow.com/questions/3345159/ in-c-whats-so-special-about-move-h). –