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);
}
答案 0 :(得分:1)
CWSTR
-每个字符使用2个字节(WCHAR
)
CSTR
-使用1个字节作为字符(CHAR
)
通过对指针进行强制转换,它将把CSTR称为CWSTR,这将导致乱码而不是文件路径。您可以尝试将(LPCWSTR)strFile
的结果打印到控制台,它将告诉您我的意思。
实际上,您将需要转换值,而不仅仅是转换指针。
您将需要使用mbstowcs_s
函数来转换值。
您可以在this文章中了解有关转换类型的更多信息:
此外,您永远不要在c ++中使用c样式强制转换。使用相关的演员表或组合,例如。 static_cast
。