C2039:'方法' + W不是班级

时间:2016-08-05 08:08:33

标签: c++ qt class methods

在我的项目中,我声明了一个名为ReplaceFile的函数,但在我的cpp中引用它时,我得到了最奇怪的错误。它附加了一个' W'到我写的方法的最后。

enter image description here

为什么它认为我写了ReplaceFileW?我已经对ReplaceFileW进行了项目搜索,但它什么都没有。

如果您还需要其他任何评论,否则,这是一个简单的解决方法吗?

以下是ReplaceFile标题中的声明及其重载:

 // Description: replace an existing file into the package
void ReplaceFile(std::string path, std::string pathInPackage, void(*replaceProgress)(void*, DWORD,
        DWORD) = NULL, void *arg = NULL);

// Description: replace an existing file into the package
void ReplaceFile(std::string path, StfsFileEntry *entry, std::string pathInPackage,
        void(*replaceProgress)(void*, DWORD, DWORD) = NULL, void *arg = NULL);

感谢您的时间。

1 个答案:

答案 0 :(得分:3)

这是因为Windows函数ReplaceFile。几乎所有WINAPI函数都有两种变体:

  1. ReplaceFileW用于宽字符串
  2. ReplaceFileA用于ASCII字符串
  3. 使用哪一个取决于UNICODE宏。以下是问题:符号ReplaceFile只是一个预处理器宏,根据ReplaceFileW宏扩展为ReplaceFileAUNICODE。并且作为所有宏,它无条件地扩展。

    解决方案:在包含Windows系统头文件后取消定义ReplaceFile宏:

    #include <windows.h>
    #undef ReplaceFile