window: C++ 获取自己写的dll的地址

我自己用C++写了一个插件,插件是dll形式的,我的插件式在dll的目录下有个config文件夹,里面是我用json写的插件配置文件,当插件运行的时候我需要读取到json配置文件,所有最重要的就是如何获取dll的路径.

大概就是这么个结构,

我自己封装了一个函数.只适用于window编程,因为里面用到了windows系统的函数,

#include <map>
#include <string>
#include <vector>
#include <memory>
#include <fstream>
#include <Windows.h>
#include <iostream>
#include <functional>
#include <filesystem>#if _MSC_VER >= 1910
using FileSysPath = std::filesystem::path;
using FileSysDirIter = std::filesystem::directory_iterator;
#define FileSys std::filesystem
#elif _MSC_VER >= 1900
using FileSysPath = std::tr2::sys::path;
using FileSysDirIter = std::tr2::sys::directory_iterator;
#define FileSys std::tr2::sys
#endifstd::string GetPluginConfigFilePath()
{std::string strConfigPath = "";char szBuff[MAX_PATH] = { 0 };GetModuleFileName(GetSelfModuleHandle(), szBuff, MAX_PATH);for (auto const& dir_entry : FileSys::recursive_directory_iterator{ FileSysPath(szBuff).parent_path()}){auto tempFilePath = dir_entry.path();if (FileSys::is_regular_file(tempFilePath)){if (tempFilePath.extension().generic_string() == ".json"){strConfigPath = tempFilePath.string();break;}}}return strConfigPath;
}HMODULE GetSelfModuleHandle()
{MEMORY_BASIC_INFORMATION mbi;return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) ? (HMODULE)mbi.AllocationBase : NULL);
}

至于通用的方式,以后用到了再研究研究纯C++怎么获取dll路径. 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/488510.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习JAVA的第二天(基础)

目录 基本概念 关键字 class关键字 字面量 练习 变量 定义格式 变量使用 数据类型 基本数据类型 标识符 命名规则 键盘录入 1.导包 2.创建对象 3.接受数据 运算符 算术运算符 练习 隐式转换&#xff08;自动类型提升&#xff09; 强制转换 自增自减运算符 …

26-k8s的附加组件-图形化管理工具dashboard

一、简单介绍 Dashboard是k8s集群管理的一个WebUI&#xff0c;它是k8s的一个附加组件&#xff0c;所以需要单独来部署&#xff1b; 我们可以通过图形化的方法&#xff0c;创建、删除、修改、查询k8s资源&#xff1b; 二、部署安装dashboard组件 Github地址&#xff1a;GitHub…

路飞项目--06

redis介绍和安装 # 数据库&#xff1a; 关系型数据库&#xff1a;mysql、oracle、postgrasql、sqlserver、sqlite IBM&#xff1a;服务器 Oracle&#xff1a;数据库 达梦 EMC&#xff1a;存储 非关系型数据库: redis、mongodb、es…

车载电子电器架构 —— 车辆模式管理

车载电子电器架构 —— 车辆模式管理 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己…

MATLAB使用绘图plot制作动态GIF

文章目录 1 前言2 DemoDemo 1 - 不使用函数Demo 2 - 使用函数 1 前言 在PPT展示或者博客创作中&#xff0c;有时需要插入动态图如GIF&#xff0c;来演示算法效果或者结果。在MATLAB中&#xff0c;可以通过一些代码&#xff0c;将绘图plot转化为动态的GIF。 其大致方法为&…

【Java】java异常处理机制(实验五)

目录 一、实验目的 二、实验内容 三、实验小结 一、实验目的 1、理解java的异常处理机制 2、掌握try catch结构和thow和thows关键字的用法 二、实验内容 1、编写一个程序&#xff0c;输入某个班某门课程成绩&#xff0c;统计及格人数、不及格人数及课程平均分。设计一个异…

查看navicat保存的数据库连接密码

背景 经常使用navicat的朋友可能会碰到忘记数据库连接密码的情况&#xff0c;自然会想到navicat连接配置中就保存了密码。 个人经验&#xff0c;按以下步骤可查看密码明文 本人在mac上使用的navicat版本 1&#xff0c;导出connection_local.ncx 点击OK导出保存为connection_l…

AT7456E集成了EEPROM的显示器芯片

AT7456E 是一款集成了 EEPROM 的单通道、单色随屏显示发生器&#xff0c;集成了视频驱动器、同步分离器、视频分离开关以及 EEPROM&#xff0c;提高了系统的集成度&#xff0c;有效降低了系统成本。 优势 1.采用符合 NTSC 和 PAL 制式的 512 个用户可编程字符&#xff0c;适合…

fpga_硬件加速引擎

一 什么是硬件加速引擎 硬件加速引擎&#xff0c;也称硬件加速器&#xff0c;是一种采用专用加速芯片/模块替代cpu完成复杂耗时的大算力操作&#xff0c;其过程不需要或者仅需要少量cpu参与。 二 典型的硬件加速引擎 典型的硬件加速引擎有GPU&#xff0c;DSP&#xff0c;ISP&a…

【三、接口协议与抓包】TCP/UDP协议的基本实现

你好啊&#xff01;我是山茶&#xff0c;一个持续探索 AI 测试之路的程序员。 TCP 协议与 TCP/IP 协议之间的关系&#xff0c;TCP 与 UDP 包含在 TCP/IP 中&#xff0c;TCP/IP 是协议簇名称 TCP (传输控制协议) 和 UDP (用户数据报协议) 是 TCP/IP 协议簇中&#xff0c;两个互…

数据结构与算法相关题解20240224

数据结构与算法相关题解 一、1. 两数之和二、121. 买卖股票的最佳时机三、122. 买卖股票的最佳时机 II四、169. 多数元素五、229. 多数元素 II六、55. 跳跃游戏七、45. 跳跃游戏 II 一、1. 两数之和 简单 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数…

2024全国水科技大会暨流域水环境治理与水生态修复论坛(六)

论坛召集人 冯慧娟 中国环境科学研究院流域中心研究员 刘 春 河北科技大学环境与工程学院院长、教授 一、会议背景 为深入贯彻“山水林田湖是一个生命共同体”的重要指示精神&#xff0c;大力实施生态优先绿色发展战略&#xff0c;积极践行人、水、自然和谐共生理念&…