gpt4 book ai didi

c++ - 在dll和exe中使用全局变量

转载 作者:太空宇宙 更新时间:2023-11-04 15:47:28 29 4
gpt4 key购买 nike

我在通用头文件中有一个全局变量。例如

commonHeader.h

int commonInt = 0;

我有 3 个 dll 项目,我想在其中使用它,所以我包含上面的标题,但它给我多次定义的错误符号,#pragma once 也不起作用。

如果我创建上面的变量 extern ,并在我的 exe 中定义它,我的 dll 中会出现链接器错误。

我所有的 dll 都需要上面的标题。我的一个 dll 需要其他 2 个 dll 的头文件(可能包含多个符号)

我如何解决上述问题,我只需要一个跨 dll 和 exe 的变量。

我在 Windows 7 上使用 VS 2010 prof。

提前致谢。

最佳答案

您在头文件中定义了全局变量,这违反了单一定义规则 (§ 3.2)。相反,您只在带有 extern 的头文件中声明它是正确的。然后在单个实现文件中定义。

但为了使它与 dll 一起工作,您还必须将其声明为由 exe 导出并由 dll 使用 __declspec(dllexport) 导入和 __declspec(dllimport) , 使用适当的宏来选择正确的 __declspec取决于您是编译 exe 还是 dll。

关于c++ - 在dll和exe中使用全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14197237/

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