windows下获取dll完整路径的方法

在封装dll的程序中,经常需要在dll程序中读取配置文件或者是保存中间结果,为了减少这些路径的由上层调用程序传入,我们经常会要求将配置文件跟dll放在一起即可,然后让程序自动获取到配置文件的位置:程序中在读取配置文件时的先获取自身dll所在的路径(*****.dll),然后根据该路径信息和配置文件的名称即可读取相应的配置文件。另外,中间结果保存路径,我们是只是想办法直接把中间结果保存在dll相同的路径下,不再需要用户再进行设置,我们在dll所在的路径下保存中间结果即可。

故我们需要能够获取dll的完整路径,然后根据该路径信息即可实现上述想法。

windows下获取dll的完整路径方法如下:

#include <windows.h>
#include <string>

//windows下获取当前dll的句柄
HMODULE GetSelfModuleHandle()
{
	MEMORY_BASIC_INFORMATION mbi;
	return ((::VirtualQuery(GetSelfModuleHandle, &mbi, sizeof(mbi)) != 0) ? (HMODULE)mbi.AllocationBase : NULL);
}
//在程序中通过调用该函数即可获取到dll的完整路径至strDllFullPath中
void GetFullPathOfDll(std::string& strDllFullPath)
{
	char szPath[MAX_PATH];
	GetModuleFileNameA(GetSelfModuleHandle(),szPath,MAX_PATH);
	strDllFullPath = std::string(szPath);
}

windows 使用MAX_PATH(260)来分配路径字符数

windows最长的文件夹长度为247个字节,最后11个字节留给文件名和扩展名使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值