多个DLL之间的Static变量以及模板实例化

2023-11-13

结论如下:

1、  DLL之间调用类public静态成员变量,不能使用A::m_static形式调用,其中A为类名,m_staticA中的static成员变量。若使用,编译出现链接错误,必须使用函数调用方式,为m_static增加set/get函数。

2、  对于模板类,VS2005编译器不支持将函数放入CPP文件之中,若放入CPP中,将产生链接错误。

3、  模板静态成员变量的初始化,可以放在.H文件之中。

4、  对于模板单例类,若两个平行DLL同时调用,模型如图1.1

   层次关系

1.1 层次结构

对于以上结构,若DLL ADLL B中,对同一个类的单例都进行实例化调用。则DLL ADLL B中将对模板类分别进行实例化,从而获取的指针是不同的值。

为了避免类似情况发生,可以在需要实例化类同一个头文件中,加入全局函数,保证实例化在类定义同一个模块中:

从而在需要访问指针时,调用AfxGetFactoryLayer()函数进行访问,保证实例化是在同一个DLL之中。

若以上代码在DLL A中,在DLL B中利用单例GetInstance()函数获取指针,与使用函数AfxGetFactoryLayer()返回指针也不相同。但调用DLL ADLL则可以获取相同指针。

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

多个DLL之间的Static变量以及模板实例化 的相关文章

  • 使用 .Net 检测外部应用程序中的拖放操作

    我需要检测拖放操作外用 是否可以 我想到写一个钩子来检测这些操作 任何人都可以指出我可以尝试挂钩哪些消息或 api 函数来检测拖放事件的正确方向吗 我想用 C 来做这个 提前致谢 您可以通过两条明显的路径来尝试此操作 第一个是挂钩参与调解拖
  • 如何制作包含DLL文件的JAR文件?

    我购买了一个第三方Java库 其中包括一个JAR文件和两个DLL文件 我编写了自己的 Java 程序来调用第三方 JAR 文件 现在我的问题是如何将我的所有代码打包到一个 JAR 文件中 其中包含我的所有代码以及第三方 JAR 和 DLL
  • Python ctypes:SetWindowsHookEx 回调函数从未被调用

    我正在尝试用 Python 编写一个程序 该程序可以识别何时显示警报框 对话框 它正在处理多个监视器 我希望它在任务栏图标闪烁 弹出错误 通知等时在辅助监视器上显示可视化效果 据我所知 检测这些事件的方法是使用消息挂钩 如下所述 http
  • 为 C# 和 C++ 应用程序编写 DLL

    我需要编写几个 DLL 它们都可以从 C 应用程序和 C 应用程序访问 最初 我认为通过用 C 编写 DLL 并从 C 和 C 应用程序链接到它们可以节省时间 精力 这种方法明智吗 还是应该使用 C 编写 DLL 我的建议是在您最舒服的地方
  • 如何防止用户杀死C#应用程序[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果您使用 ESET Smart S
  • 获取正在运行的程序的属性

    我想开发一个程序 其 ID 是一张牌 因为它在另一个正在运行的程序 例如扑克或红心游戏或其他程序 中播放 我首先尝试获取有关已运行的游戏程序的所需信息 但我从一开始就遇到了问题 我正在运行 MSVC 2013 并开发 MFC 应用程序 现在
  • 我不断听说 DLL 地狱——这是什么? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Windows XP 风格:为什么我们在静态文本小部件上得到深灰色背景?

    我们正在使用 C 和 Win32 编写 Windows 桌面应用程序 我们的对话框具有 Windows XP 风格 的丑陋外观 静态文本的背景是灰色的 如果对话框背景也是灰色 这不是问题 但在背景为白色的选项卡控件内 文本的灰色背景非常明显
  • AutoCAD 插件开发示例

    我对开发 AutoCAD 插件感兴趣 并试图了解几种不同类型的 AutoCAD 插件文件之间的关系 随 AutoCAD 插件一起提供的托管 DLL ARX 文件 https fileinfo com extension arx附带 Auto
  • C++ win32设置光标位置

    我知道要使用哪个功能 但我无法让它正常工作 我用了SetCursorPos 唯一的问题是它将光标设置为屏幕坐标而不是窗口坐标 我也尝试过ScreenToClient 但它并没有起作用 这是我的代码 pt x 113 pt y 280 Scr
  • windows下删除进程权限

    出于安全原因 我正在寻找一种删除进程权限的方法 我想以具有特权的用户身份开始 并以受限用户身份结束 例如 我希望我的 Web 服务器在受限用户下运行 但我仍然想监听端口 80 我怎样才能在Windows下做这样的事情 与 Unix 类似的东
  • 如何检测Windows 8.1开始菜单?

    当我们在 Windows 8 1 上按下开始菜单时 它会以磁贴的形式显示所有新的开始菜单以及应用程序 该菜单显示在整个屏幕上 有没有办法检测这个菜单是否在 C 中打开 8 1 SDK 中是否有 winAPI 可以执行此操作 提前致谢 调用
  • 读取进程的进程内存不会返回所有内容

    我正在尝试扫描第三方应用程序的内存 我已经查到地址了 现在是在0x0643FB78 问题是 从那以后我就再也爬不上去LPMODULEENTRY32 gt modBaseAddr is 0x00400000 and LPMODULEENTRY
  • 制作 C# 项目 DLL 和 EXE

    我正在开发一个项目 需要有一个可执行文件以便用户可以运行配置界面和一个可以嵌入其他项目以使用其他一些功能的 DLL 有没有办法让 Visual Studio 同时生成可执行文件和 DLL 而不是每次都手动切换 我同意 TJMonk15 的观
  • 捕获由纯 C++ dll 中的 MFC 应用程序生成的 Windows 消息

    首先 这可能吗 我有一个与某些硬件接口的第三方 dll 它是用MFC编写的 我 从 dll 供应商处 收到了一个示例 Visual Studio 2010 解决方案 该解决方案只有一个项目 调用相关第三方 dll 的 MFC 应用程序 ex
  • 隐藏错误报告窗口

    我有以下问题 我的 ASP Net 应用程序接收简单控制台程序的 C 源代码 使用 cl exe 命令行 VC 编译器 对其进行编译 并使用 System Diagnostics Process 运行它 ASP Net应用程序运行在PC上
  • 当用户拖动列表视图项目时检测何时需要滚动

    介绍 我正在实现列表视图项目的重新排列 而不使用 OLE 拖放 PROBLEM 我已经成功解决了大部分任务 除了当用户想要将项目放置在当前不可见的位置时向上 向下滚动之外 问题 我可以使用以下消息向上 向下滚动列表视图 SendMessag
  • 从 GetLastError() 函数返回的错误代码中获取文本

    我需要获取从 GetLastError 函数获得的错误代码的文本 我看到了一些示例 但我想要一个获取代码并返回字符串的函数 谢谢大家 我猜你想要这样的东西 DWORD dwLastError GetLastError TCHAR lpBuf
  • 如何从 dll 导出 C++ 类? [复制]

    这个问题在这里已经有答案了 我有一个有两个重载函数的类 如何从 dll 导出它以及如何由其他 C 类使用它 我的班级是这样的 define DECLDIREXP declspec dllexport define DECLDIRIMP de
  • 无法从 ASP.NET 调用 DLL

    您好 我有一个 C Dll 它将与 cobol 应用程序交互 我们想通过互联网将数据发送到cobol 所以我创建了一个 C DLL 它将调用 C DLL 当我执行控制台应用程序时 它工作正常 但是当我尝试从 ASP NET 调用相同的 DL

随机推荐

  • arm-none-linux-gnueabi-gcc下载

    arm none linux gnueabi gcc是 Codesourcery 公司 目前已经被Mentor收购 基于GCC推出的的ARM交叉编译工具 可用于交叉编译ARM系统中所有环节的代码 包括裸机程序 u boot Linux ke
  • 分词汇总

    SCWS Author Hightman 算法 基于词频词典的机械中文分词引擎 采用的是采集的词频词典 并辅以一定的专有名称 人名 地名 数字年代等规则识别来达到基本分词 准确率 经小范围测试大概准确率在 90 95 之间 已能基本满足一些
  • 移动Web开发入门(三) -- touch事件

    文章目录 touch事件 touch事件分类 代码演示 页面效果 点击红色区域未移动 点击红色区域 移动到红色区域抬起 点击红色区域 移动到红色区域外抬起 在红色区域外点击 移动到红色区域抬起 在红色区域外点击 穿过红色区域移动到红色区域外
  • 在Qt中,信号(signal)是怎样传递的

    在Qt中 信号 signal 是利用Qt的事件系统实现的 当信号被发射时 Qt会将其转换为一个事件 并将其插入到应用程序的事件队列中 每个QObject对象都有一个事件接收函数 即QObject event 函数 用于接收和处理事件 当一个
  • 如何使用宝塔面板搭建网站(搭建宝塔页面)

    书接上回 咱们已经搭建好咱们的Linux服务器 接下来改是搭建宝塔页面的教程了 这里我们需要一个域名 自行去各家云服务器购买域名 例如 腾讯云 阿里云 华为云等等 购买一个域名之后我们就可以开始搭建了 首先 启动你的Linux服务器 在此页
  • 4、Nginx 配置实例-反向代理

    文章目录 4 nginx 配置实例 反向代理 4 1 反向代理实例一 4 1 1 实验代码 4 3 反向代理实例二 4 3 1 实验代码 尚硅谷 尚硅谷Nginx教程由浅入深 志不强者智不达 言不信者行不果 4 nginx 配置实例 反向代
  • 0401自学web后端之——Flask配置文件

    输出默认config from flask import Flask current app app Flask name with app app context print dict current app config ENV pro
  • 【转】BAT机器学习面试1000题系列(第288~305题)

    288 LSTM神经网络输入输出究竟是怎样的 YJango 本题解析来源 https www zhihu com question 419497412017年1月4日文章Recurrent Layers 介绍 第一要明确的是神经网络所处理的
  • 信息管理毕业设计选题推荐

    文章目录 0 前言 1 java web 管理系统 毕设选题 2 java web 平台 业务系统 毕设选题 3 游戏设计 动画设计类 毕设选题 适合数媒的同学 4 算法开发 5 数据挖掘 毕设选题 6 大数据处理 云计算 区块链 毕设选题
  • 爬虫之代理的问题解决

    爬虫之代理 昨天学习小甲鱼的代理 但是弄了一晚上也没成功 一会是什么不积极相应 一会又是什么远程主机拒绝访问 http 45 32 164 128 ip php是个能返回当前访问的IP的网址 123 163 27 115 9999 是我在h
  • 视觉SLAM技术及其应用(章国锋--复杂环境下的鲁棒SfM与SLAM)

    SLAM 同时定位与地图构建 机器人和计算机视觉领域的基本问题 在未知环境中定位自身方位并同时构建环境三维地图 应用广泛 增强现实 虚拟现实 机器人 无人驾驶 SLAM常用的传感器 红外传感器 较近距离感应 常用与扫地机器人 激光雷达 单线
  • Myeclipse Bule Edition 添加SVN的方法

    今天 因项目需要在Myeclipse中添加svn 添加svn的方法可能有很多种 比较简单的自然是自动安装 这里离介绍一下手动的安装方法 1 需要下载一个subeclipse site的压缩包 网上有得下 subeclipse site 1
  • nginx check健康检查

    nginx利用第三方模块nginx upstream check module来检查后端服务器的健康情况 大家都知道 前段nginx做反代 如果后端服务器宕掉的话 nginx是不能把这台realserver提出upstream的 所以还会有
  • 高性能 Jsonpath 框架,Snack3 3.2.29 发布

    Snack3 一个高性能的 JsonPath 框架 借鉴了 Javascript 所有变量由 var 申明 及 Xml dom 一切都是 Node 的设计 其下一切数据都以ONode表示 ONode也即 One node 之意 代表任何类型
  • VUE项目性能优化,v-if,v-for,props,computed,watch......

    VUE项目性能优化 v if v for props computed watch 下个星期就要用vue开发了 就未雨绸缪的搜集了一些干货 整理出来 1 解决v for和v if优先级问题 以及通过计算属性来做数据筛选
  • Dynamics 365 DevOps CI/CD之WebResource

    对于D365自身的发布 简单点来说就是Solution的发布 复杂一些会涉及周边集成接口等一系列的发布 如果是单纯的Solution的发布的Azure DevOps商店里有很多工具 比如Power DevOps Tools 这个我之前也有博
  • Qt之QTableView显示鼠标悬浮下的项的信息

    业务上遇到一些需求 某个需求是当鼠标移动到QTableView的item上时 显示该item的某些信息 首先想到的思路就是鼠标悬浮事件 即安装QTableView的事件过滤器 然后在eventFilter进行判断即可 实现很简单 主要在针对
  • 段式存储管理、段页式存储管理

    分页与分段的区别 1 页是信息的物理单位 是系统管理的需要而不是用户的需要 而段是信息的逻辑单位 分段是为了更好地满足用户的需要 2 页的大小固定且由系统决定 一个系统只能有一种大小的页面 而段的长度不固定 由用户所编写的程序决定 3 分页
  • WinEdt 31天试用期到期解决方案

    WinEdt 在试用期过后 会频繁出现 WinEdt s trial period of 31 days has elapsed 的提示窗口 解决方案 修改脚本Exit edt 从Options Options Interface Adva
  • 多个DLL之间的Static变量以及模板实例化

    结论如下 1 DLL之间调用类public静态成员变量 不能使用A m static形式调用 其中A为类名 m static为A中的static成员变量 若使用 编译出现链接错误 必须使用函数调用方式 为m static增加set get函