在我的项目中,我声明了一个名为ReplaceFile的函数,但在我的cpp中引用它时,我得到了最奇怪的错误。它附加了一个' W'到我写的方法的最后。
为什么它认为我写了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);
感谢您的时间。
答案 0 :(得分:3)
这是因为Windows函数ReplaceFile
。几乎所有WINAPI函数都有两种变体:
ReplaceFileW
用于宽字符串ReplaceFileA
用于ASCII字符串使用哪一个取决于UNICODE
宏。以下是问题:符号ReplaceFile
只是一个预处理器宏,根据ReplaceFileW
宏扩展为ReplaceFileA
或UNICODE
。并且作为所有宏,它无条件地扩展。
解决方案:在包含Windows系统头文件后取消定义ReplaceFile
宏:
#include <windows.h>
#undef ReplaceFile