错误'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'函数。

C2664 错误:无法将参数 1 从“WCHAR [260]”转换为“const char *”的解决方法

原文地址: http://www.cveoy.top/t/topic/nnKf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录