2

我正在为游戏构建 .SM2 和 .RM2 提取器/编译器,但代码有问题。我完全没有 C++ 经验,代码是原始创建者提供的源代码。即使他没有被我编辑的原始文件也有错误,但他仍然制作了程序。有人可以帮我解决错误吗?

错误:

错误 1:错误 C2664:“CreateDirectoryW”:无法将参数 1 从“const char [25]”转换为“LPCWSTR”

错误 2:错误 C2664:“CreateDirectoryW”:无法将参数 1 从“char *”转换为“LPCWSTR”(X3)

错误 4:错误 C2664:“FindFirstFileW”:无法将参数 1 从“char [256]”转换为“LPCWSTR”

错误 5:错误 C2440:“正在初始化”:无法从“WCHAR [260]”转换为“char*”

这是我的代码,显然有错误:

CreateDirectory(".\\TESTFOLDER\\TESTFOLD2ER", NULL);   (This is for Error 1)

CreateDirectory(string, NULL);
break;                          (This is for Error2)


if ((hdl = FindFirstFile(asteriskpath, &data)) == INVALID_HANDLE_VALUE)
    return;       (For Error3)

char* filename = data.cFileName;
char current_dir[256];       (For Error4)

请帮忙,谢谢, Cameron Sawaya

4

1 回答 1

2

方法1:将您的项目字符设置设置为Use Multi-Byte Character Set

配置属性 > 常规 > 项目默认值 > 字符集 > 使用多字节字符集


方法二

  • 对于错误 1/2/4:

    您应该在传递给之前转换char[]为first (对于您的错误 1,对于其他错误 2 和 4 类似),因为它们使用不同的字符编码类型。用国旗试试。wchar_t[]CreateDirectory()swprintf%hs

    例子:

    wchar_t  ws[100];
    swprintf(ws, 100, L"%hs", ".\TESTFOLDER\TESTFOLD2ER");
    
  • 对于错误 5:

    您可以使用该wcstombs函数转换wchar_t[]char[],参考here


于 2014-01-01T03:28:52.077 回答