我正在使用Visual C++ Express创建一个DLL,并且在声明时extern ValveInterfaces* VIFace
内的Required.h
,编译器告诉我ValveInterfaces
未定义。 (我想将VIFace
公开到包括Required.h
的任何文件中)
这是我文件的结构:
DLLMain.cpp
#include "Required.h" //required header files, such as Windows.h and the SDK
ValveInterfaces* VIFace;
//the rest of the file
必需。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
错误的屏幕截图:
http://i.imgur.com/lZBuB.png
最佳答案
第一个错误:
error C2143: syntax error : missing ';' before '*'
是一个死掉的礼物,表明在您首次尝试使用
ValveInterfaces
类型时尚未定义它。因为
ValveInterfaces
的类型是未知的,所以几乎总是会发生这种情况。既然已经切掉了大量的ValveInterfaces.h
,这很难说出来,但是,即使在那里定义了它,也可能是#pragma once
的怪异组合,而且_REQUIRED_H
的明显放错了位置,包括防护罩(它们通常在required.h
中)引起你的悲伤关于c++ - extern关键字 "missing type specifier",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8877003/