如何创建一个具有全局变量的lib文件,这些全局变量应该将它的信息共享给另一个项目

时间:2014-09-01 06:22:14

标签: c++ c visual-studio-2008

在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仅在项目中包含一次。

1 个答案:

答案 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中定义。