Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何修复加载DLL的问题_C++_Dll - Fatal编程技术网

C++ 如何修复加载DLL的问题

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 \'" &

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);
}
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。如果我改为多字节字符集,为什么它不编译?为什么它使用旧的分支?这个问题与这个线程无关。我建议您添加一个关于新问题的新问题。