C++ 如何修复加载DLL的问题
dll未加载,我怀疑类型转换有问题 我输入了LPCWSTR,但是在加载时失败了,如果我直接给路径加载的话,它工作正常。但它不是走strFile路径C++ 如何修复加载DLL的问题,c++,dll,C++,Dll,dll未加载,我怀疑类型转换有问题 我输入了LPCWSTR,但是在加载时失败了,如果我直接给路径加载的话,它工作正常。但它不是走strFile路径 HINSTANCE initH2oLibFilename(LPCSTR strFile, std::ostream& os) { HINSTANCE lib = LoadLibrary((LPCWSTR)strFile); if(!lib) { os << "Error loading \'" &
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);
}
CWSTR-每个字符WCHAR使用2个字节
CSTR-字符字符使用1字节
通过对指针进行强制转换,它将CSTR引用为CWSTR,这将导致gibrish而不是文件路径。您可以尝试将LPCWSTRstrFile的结果打印到控制台,它会告诉您我的意思
实际上,您需要转换值,而不仅仅是转换指针
您需要使用mbstowcs_s函数来转换这些值
您可以在本文中了解有关转换类型的更多信息:
<>另外,你不应该在C++中使用C风格的演员阵容。使用相关的强制转换或组合,例如静态强制转换。在initH2oLibFilename之前strFile是什么样子的?确切的错误消息是什么?请发一封信。顺便说一句。由于您使用的是LPCSTR,您可以使用它来代替LoadLibraryPCWSTRFILE…感谢您的回答,我尝试了您的解决方案,它工作得很好。在其他没有强制转换到strFile的分支中,他们直接加载LoadLibrarystrFile;,在项目属性中,字符集被设置为多字节字符集,并使用MFC->use标准windows库,它工作正常,但在失败的情况下,如果我进行上述更改,它仍然不工作。获取35个错误。错误:1>错误181错误LNK1104:无法打开文件“D:\Krawal\Devpt_branch\20433-21701-KM GUI Extraction\KalculationShadows\Debug\AggregatedTrommel.obj”D:\Krawal\Devpt_branch\20433-21701-KM GUI Extraction\ExeStub\LINK ExeStub。如果我改为多字节字符集,为什么它不编译?为什么它使用旧的分支?这个问题与这个线程无关。我建议您添加一个关于新问题的新问题。