在visual studio 2008中创建项目。现在我们想要将项目拆分成许多库文件(DLL),但问题是我们有全局变量在使用此文件的单独globals.h文件中我们正在访问项目中的全局变量使用在externals.h中声明的extern关键字。
如何跨不同的库文件共享这些全局变量信息???
globals.h externs.h
int a=0; extern int a;
int b=0; extern int b;
... ...
... ...
注意:globals.h仅在项目中包含一次。
答案 0 :(得分:1)
全局变量的常用方法如下:
globals.h
extern int a;
extern int b;
globals.c
int a = 1;
int b = 2;
请注意,变量的实际定义位于c(或cpp)文件中。
如果您要从dll导出全局变量,则必须执行其他步骤。
globals.h
#ifdef MYDLL_EXPORTS
#define MYDLL_API __declspec(dllexport)
#else
#define MYDLL_API __declspec(dllimport)
#endif
extern MYDLL_API int a;
extern MYDLL_API int b;
globals.c
#include "globals.h"
MYDLL_API int a = 1;
MYDLL_API int b = 2;
构建dll时必须定义MYDLL_EXPORTS。如果您从其他dll或可执行文件中使用它,则必须未定义它。
__declspec(dllexport)
告诉链接器:此符号(变量,函数,类)将由其他dll或应用程序使用。
__declspec(dllimport)
告诉编译器:此符号未在此项目中定义,但在其他dll中定义。