C2664 错误:无法将参数 1 从“WCHAR [260]”转换为“const char *”的解决方法
错误'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'函数。
原文地址: http://www.cveoy.top/t/topic/nnKf 著作权归作者所有。请勿转载和采集!