如何解决使用Boost
BOOL Class::fn_GetModulePath(WCHAR szPath[MAX_PATH])
{
BOOL bReturn = FALSE;
dll::library_handle hDll = dll::load_shared_library((const char*)DC_DLL_FILENAME);
//HMODULE hDll = LoadLibrary(DC_DLL_FILENAME);
if (hDll)
{
// This function needs replacing
DWORD dwResult = GetmodulefileName(hDll,szPath,MAX_PATH);
dll::close_shared_library(hDll);
//FreeLibrary(hDll);
if (dwResult)
{
int iLen = (int) wcslen(szPath);
if (iLen)
{
for (int i = iLen; i >= 0; i--)
{
if(szPath[i] == '\\')
{
szPath[i+1] = 0;
break;
}
}
}
bReturn = TRUE;
}
}
return bReturn;
}
我该如何使用Boost实现GetmodulefileName
函数?
任何帮助表示赞赏!
解决方法
您可以像这样使用Boost.Dll
:
shared_library lib(DC_DLL_FILENAME);
filesystem::path full_path = lib.location();
如果您尝试获取当前正在运行的代码的路径,即boost::dll::this_line_location()
。
boost::dll::shared_library
类具有方法location
,该方法将返回库的完整路径。
对于整个程序,有boost::dll::program_location
个全局函数。
此外,可以通过符号地址和源位置找到可执行文件或库的位置:
boost::dll::symbol_location
boost::dll::this_line_location
后者只能由模块用来查找其自己的位置。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。