error C2664: “FindFirstFileW”: 不能将参数 1 从“char [260]”转换为“LPCWST

来源:互联网 发布:怎么查看服务器的域名 编辑:程序博客网 时间:2024/06/07 22:12

#include <windows.h>
#include <string.h>
#include <stdio.h>


int _tmain(int argc, _TCHAR* argv[])
{
 WIN32_FIND_DATA FindFileData;
 HANDLE hFind = INVALID_HANDLE_VALUE;
 char DirSpec[MAX_PATH];  // directory specification
 DWORD dwError;

 printf ("Target directory is %s.\n", argv[1]);
 strncpy (DirSpec, argv[1], strlen(argv[1])+1);
 strncat (DirSpec, "\\*", 3);

 hFind = FindFirstFile(DirSpec, &FindFileData);

 if (hFind == INVALID_HANDLE_VALUE)
 {
  printf ("Invalid file handle. Error is %u\n", GetLastError());
  return (-1);
 }
 else
 {
  printf ("First file name is %s\n", FindFileData.cFileName);
  while (FindNextFile(hFind, &FindFileData) != 0)
  {
   printf ("Next file name is %s\n", FindFileData.cFileName);
  }

  dwError = GetLastError();
  FindClose(hFind);
  if (dwError != ERROR_NO_MORE_FILES)
  {
   printf ("FindNextFile error. Error is %u\n", dwError);
   return (-1);
  }
 }

 return (0);

}

 下面两错误:

hFindFile = FindFirstFile(szTempDir,&FileData);
error C2664: “FindFirstFileW”: 不能将参数 1 从“char [261]”转换为“LPCWSTR”


strcmp(FileData.cFileName,".")
error C2664: “strcmp”: 不能将参数 1 从“WCHAR [260]”转换为“const char *”

 

解决方法:

1、把工程设置里去掉UNICODE宏定义

      项目->XXX属性->配置属性->常规->字符集 改为 “未设置” 就去掉了unicode支持,不过应该回报一个警告

 

      如果实在找不到也可以在#include <windows.h>之前加上一句
      #undef UNICODE
      来解决

2、或者,你全部使用
      TCHAR替换char
      字符串常量用_T()括起来,如_T("*")

 

解决之后运行的截图: