我在通用头文件中有一个全局变量。例如
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/