如何修复加载DLL

时间:2019-07-02 07:36:21

标签: c++ dll

dll没有加载,我怀疑类型转换有问题。

我已强制转换为LPCWSTR,但如果直接给路径加载工作正常,则加载时失败。但是它没有采用strFile路径。

HINSTANCE initH2oLibFilename(LPCSTR strFile, std::ostream& os)
{

HINSTANCE lib = LoadLibrary((LPCWSTR)strFile);
    if(!lib)
    {
        os << "Error loading \'" << strFile <<'\''<< std::endl;
        return NULL;
    }
}


HINSTANCE initH2oLibIF97(LPCSTR strPath, std::ostream& os)
{

    std::string strFile(strPath);
    strFile += "H2O32Bit.dll";
    return initH2oLibFilename(strFile.c_str(), os);
}

1 个答案:

答案 0 :(得分:1)

CWSTR-每个字符使用2个字节(WCHAR

CSTR-使用1个字节作为字符(CHAR

通过对指针进行强制转换,它将把CSTR称为CWSTR,这将导致乱码而不是文件路径。您可以尝试将(LPCWSTR)strFile的结果打印到控制台,它将告诉您我的意思。

实际上,您将需要转换值,而不仅仅是转换指针。

您将需要使用mbstowcs_s函数来转换值。

您可以在this文章中了解有关转换类型的更多信息:

此外,您永远不要在c ++中使用c样式强制转换。使用相关的演员表或组合,例如。 static_cast