【问题标题】:how to create a lib file which has global variables and these global variables should share it's information to another project如何创建具有全局变量的 lib 文件,这些全局变量应将其信息共享给另一个项目
【发布时间】:2014-09-01 06:22:14
【问题描述】:

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

【问题讨论】:

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


【解决方案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 中。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-08-19
  • 2019-08-17
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
  • 2014-11-29
  • 2016-10-25
  • 1970-01-01
相关资源
最近更新 更多