gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:42:57 27 4
gpt4 key购买 nike

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

最佳答案

全局变量的常用方法如下:

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 中。

关于c++ - 如何创建一个包含全局变量的 lib 文件,这些全局变量应该将它的信息共享给另一个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25599896/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com