在全局头文件中声明全局?

2023-12-09

我有一个头文件,比如说 Common.h,它包含在多个项目的所有文件中。基本上我想声明一个全局变量,例如:

class MemoryManager;
DLL_EXPORT MemoryManager* gMemoryManager;

当我这样做时,我收到大量链接器错误说

类 MemoryManager* gMemoryManager 已定义。

:(?


事实上,您正在每个编译文件中创建变量的单独副本。然后它们在链接阶段发生碰撞。请记住,预处理器会读入所有头文件,并从所有头文件中生成一个大文件。因此,每次编译这个大文件时,都会生成另一个相同的副本gMemoryManager被建造。

你需要使用extern并将其定义在一个非头文件中。

在你的头文件中

extern DLL_EXPORT MemoryManager* gMemoryManager;

在您的 C++ 文件之一中

DLL_EXPORT MemoryManager * gMemoryManager;

顺便说一句,我不知道 DLL_EXPORT 是做什么的,我只是假设它需要出现在这两个地方。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在全局头文件中声明全局? 的相关文章

随机推荐

  • Python 3.5 + PyQt5 到独立 exe

    我是编码新手 我需要将 py 文件转换为 exe 我尝试了 py2exe 但它不适用于 python 3 5 然后我尝试了pyinstaller 它起作用了 但是当我将PyQt5添加到程序中时 pyinstaller也失败了 我尝试了 nu
  • Ipython Notebook 和 Matplotlib:如何在 html div 中包装绘图?

    我想添加一些css到我的情节的一部分 具体来说 我想设置float left 我怎样才能在div中生成绘图 这样我就可以使用css控制它的布局 例如 对于代码 def simple plot ax None if ax is None fi
  • 用于多行标题的 JTable 标题文本换行(自定义 TableCellRenderer)

    如何获取多行 JTable 标题 其中标题列正确放大以适合某些文本 然后换行到新行 如下所示 目前搜索上述需求返回了很多解决方案 但没有一个真正解决问题 http www javarichclient com multiline colum
  • 为什么我要在 C 中按值传递函数参数?

    我正在通过我的一些 C 库来磨练我的 C 技能 在完成第一个工作实现之后 我现在正在检查代码以使其更加高效 目前我正在讨论通过引用或值传递函数参数的主题 我的问题是 为什么我要在 C 中按值传递任何函数参数 代码可能看起来更干净 但它不是总
  • Visual Studio 的 Eclipse 按键绑定

    有人有类似 VS 2005 的可用于 Eclipse 的键绑定方案吗 如何将其导入 Eclipse 的首选项 我只看到导出按钮 如何在 Eclipse 中安装 Visual Studio 键绑定 Helios 及以上版本 对于找到这篇文章的
  • 由于 ExtensionlessUrlHandler,WebAPI 重写规则失败

    我正在尝试使用 IIS 将请求从 ASP net MVC 4 应用程序重写到 ASP net MVC 4 WebApi 从客户端 我使用 ajax 回调服务器 然后我希望服务器重写请求以指向 webapi 站点 如果我能让它工作 这应该可以
  • Java中的同步方法和同步块有什么区别? [复制]

    这个问题在这里已经有答案了 Java 中的同步方法和同步块有什么区别 我一直在网上寻找答案 人们似乎对此很不确定 我的看法是 两者之间没有区别 除了同步块的范围可能更本地化 因此锁定的时间会更短 如果对静态方法加锁 那么加锁的对象是什么 类
  • Java 转换/类加载器问题

    这是问题的简化版本 SomeClass c SomeClass obj getSomeClassParent 并非总是如此 但有时会触发异常 org somepackage SomeClass can t be cast to org so
  • 在已编译的 Java 类中重写方法调用

    我想在解析编译的类文件时将对给定类的调用替换为对方法体内另一个类的调用 或者换句话说 是否有一种方法可以检测方法中给定类的使用情况 并使用类似的方法替换该方法的该部分javassist 例如 如果我有编译版本 class A public
  • Django loaddata 如何知道哪些字段构成自然键?

    我使用 Django 的 dumpdata 来保存数据并使用 loaddata 来重新加载它 我也在使用自然键 我的模型看起来与此类似 class LinkManager models Manager def get by natural
  • jQuery - Raphael - SVG - 基于自定义数据的选择器

    我已将自定义数据属性分配给添加到 Raphael 画布的一些圆圈 如下所示each loop marker data transaction transaction 如何在画布上找到具有相同交易数据值的元素 目前我有代码 var found
  • 如何在Python中实现接口?

    public interface IInterface void show public class MyClass IInterface region IInterface Members public void show Console
  • 为什么这个 constexpr 静态成员函数在调用时不被视为 constexpr? [复制]

    这个问题在这里已经有答案了 为什么是这样constexpr static成员函数 由 Nah评论 不被视为constexpr什么时候打电话 struct Item id enum Enum size position attributes
  • 树 - 拖放节点 - 刷新?

    我有一个与 smartgwt 树结构相关的问题 我正在创建一棵树 称为nodesTree 具有来自数据库的值 并且每个节点都设置了一个名称 例如 我有 4 个节点 数字是节点的名称 1 2 3 4 for TreeNode node nod
  • 在 PHP 中包含文件时注释会产生影响吗? [复制]

    这个问题在这里已经有答案了 可能的重复 评论解释的代码和性能 当您在 PHP 中包含文件时include 或者任何其他函数 其性能是否受到包含文件的注释量的影响 我并不是说我要牺牲易读性 不 解析文件所需的时间节省是无法衡量的 太小 根本不
  • 正则表达式用原始字符替换“转义”字符

    NOTE 我不会使用正则表达式解析大量 html 或通用 html 我知道那很糟糕 TL DR 我有像这样的字符串 A sentence with an exclamation Next is a character 原始标记中存在 转义
  • 当“function”是中缀运算符时,如何在包内使用“package::function()”?

    根据 H Wickham 的书R 包在 包元数据 一章中 关于如何添加包依赖项 Hadley 指出了使用语法显式引用外部函数的充分理由package function 在此处添加包依赖项可确保安装它 但是 这并不意味着它将与您的包 即库 x
  • 提取 MSER 检测到的区域(Python、OpenCV)

    我无法在此图像中通过 MSER 提取检测到的区域 我想做的是拯救绿色边界区域 我的实际代码是这样的 import cv2 import numpy as np mser cv2 MSER create img cv2 imread C Us
  • 它向我抛出 500 Failed tovaluate expression 'ROLE_USER' in spring security

    SEVERE Servlet service for servlet dispatcher in context with path SecuritySpring threw exception java lang IllegalArgum
  • 在全局头文件中声明全局?

    我有一个头文件 比如说 Common h 它包含在多个项目的所有文件中 基本上我想声明一个全局变量 例如 class MemoryManager DLL EXPORT MemoryManager gMemoryManager 当我这样做时