微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Boost

如何解决使用Boost

我需要从Windows移植以下代码以增强功能

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 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?