严重性 代码 说明 项目 文件 行 禁止显示状态错误 C2664 int _stricmpconst char const char 无法将参数 1 从WCHAR 260转换为const char Dll_DelStVdf CUsersAMDINsourcereposDll_DelStVdfDll_DelStVdfdllmaincpp 71
错误 C2664 表示代码中出现了类型不匹配的错误。具体来说,这个错误信息表示在函数调用中,实参的类型不能正确地转换为形参的类型。
在这个具体例子中,错误出现在 dllmain.cpp 文件的第 71 行。根据错误信息可以推断出,代码试图调用 _stricmp 函数,但是函数的第一个参数是 WCHAR 类型的数组,而不是 const char* 类型的指针,导致类型不匹配。
解决这个错误的方法是,将 WCHAR 类型的数组转换为 const char* 类型的指针。可以使用 WideCharToMultiByte 函数来实现这个转换。具体代码如下:
#include <Windows.h>
BOOL APIENTRY DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
    switch (ul_reason_for_call)
    {
    case DLL_PROCESS_ATTACH:
        {
            WCHAR wszPath[MAX_PATH] = L"C:\\test\\test.txt";
            char szPath[MAX_PATH];
            WideCharToMultiByte(CP_ACP, 0, wszPath, -1, szPath, MAX_PATH, NULL, NULL);
            int nRet = _stricmp(szPath, "C:\\test\\test.txt");
            // do something
            break;
        }
    case DLL_THREAD_ATTACH:
    case DLL_THREAD_DETACH:
    case DLL_PROCESS_DETACH:
        break;
    }
    return TRUE;
}
在这个示例中,先将 WCHAR 类型的数组 wszPath 转换为 char 类型的数组 szPath,然后再将 szPath 作为参数调用 _stricmp 函数。
原文地址: https://www.cveoy.top/t/topic/b35d 著作权归作者所有。请勿转载和采集!